Compare commits
79 Commits
v1.32.14(3
...
v1.32.28(3
| Author | SHA1 | Date | |
|---|---|---|---|
| 46d0510ed8 | |||
| b02e12d76e | |||
| c6bbde2b67 | |||
| cfbb27a67b | |||
| 35283fc11b | |||
| c3d62f88b4 | |||
| fc8469bf07 | |||
| 400f1440db | |||
| ad12e7e65b | |||
| a63e3817b5 | |||
| cbd772bf7e | |||
| e90bd46a42 | |||
| 96bd5d516c | |||
| d9306e13c2 | |||
| fc80baeaee | |||
| c0b49b68f7 | |||
| 73242bc208 | |||
| d4b60a51bd | |||
| 1bc687c79a | |||
| 3a6b0949d4 | |||
| bfc03a4ef9 | |||
| 4dfa796790 | |||
| f0db805c84 | |||
| 0cc742e103 | |||
| d01319c417 | |||
| c0b9496041 | |||
| d4e7832f80 | |||
| cb4f9e68f5 | |||
| ac4a5b1d34 | |||
| 39ebc9d367 | |||
| 7ef0299282 | |||
| 6a998d6605 | |||
| 9eb4b0a621 | |||
| f55080f7ca | |||
| 7fb6109e18 | |||
| f419944699 | |||
| 8de54a504b | |||
| 6f2be2b459 | |||
| fa413aba25 | |||
| ab6eeb91a6 | |||
| 16cbe01157 | |||
| 16cb685bb3 | |||
| 28501c5509 | |||
| 79c4bdad48 | |||
| 68007ebc8e | |||
| c5eec26f8d | |||
| 5c3f8d8717 | |||
| 43aa0f0324 | |||
| 4ab7bf27d7 | |||
| 28f4ac4414 | |||
| 60414c949e | |||
| ff09147968 | |||
| 17e66af99a | |||
| 762ab2719d | |||
| 95f282cd4d | |||
| 029979c463 | |||
| e748161dda | |||
| c2c2a1f984 | |||
| fd13f2f1b4 | |||
| ac6cca1eda | |||
| dc46b36624 | |||
| 42aa655021 | |||
| b89085a9c3 | |||
| 557644f024 | |||
| 258ed9d7ca | |||
| be7d3775cc | |||
| 93ffb191b5 | |||
| 8eb58a4d64 | |||
| 4bc8374ea3 | |||
| f76295c3f6 | |||
| b8486b677f | |||
| 1ad2d9ca9b | |||
| a57eadeab3 | |||
| 1c34b120db | |||
| c6c19ca04b | |||
| 987d667350 | |||
| e704bd1597 | |||
| 0f08d704ac | |||
| d3c518b7df |
@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
|
||||
|
||||
android {
|
||||
|
||||
def appVersionCode = 354
|
||||
def appVersionName = '1.32.14'
|
||||
def appVersionCode = 368
|
||||
def appVersionName = '1.32.28'
|
||||
|
||||
signingConfigs {
|
||||
release {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -70,19 +70,19 @@ public class MainApplication extends Application {
|
||||
|
||||
|
||||
// handler listener
|
||||
private Thread.UncaughtExceptionHandler _unCaughtExceptionHandler =
|
||||
private final Thread.UncaughtExceptionHandler _unCaughtExceptionHandler =
|
||||
new Thread.UncaughtExceptionHandler() {
|
||||
@Override
|
||||
public void uncaughtException(Thread thread, Throwable ex) {
|
||||
try {
|
||||
UtilityLogger.error(new Exception(ex));
|
||||
} catch (Exception e) {
|
||||
Log.e("Uncaught error", "Exception Logger failed!", e);
|
||||
//MainApplication.exit();
|
||||
}
|
||||
|
||||
// re-throw critical exception further to the os (important)
|
||||
defaultUncaughtExceptionHandler.uncaughtException(thread, ex);
|
||||
|
||||
try {
|
||||
UtilityLogger.error(new Exception(ex));
|
||||
MainApplication.exit();
|
||||
} catch (Exception e) {
|
||||
Log.e("Uncaught error", "Exception Logger failed!", e);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -67,8 +67,10 @@ import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamento
|
||||
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeModule;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditComponent;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditModule;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloComponent;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloModule;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo.DialogEditArticoloComponent;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo.DialogEditArticoloModule;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList.DialogSelectArtToOrderComponent;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList.DialogSelectArtToOrderModule;
|
||||
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaComponent;
|
||||
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaModule;
|
||||
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanGrigliaAcquistoComponent;
|
||||
@@ -174,7 +176,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
|
||||
BottomSheetMtbColrEditModalModule.class,
|
||||
DialogChooseArtsFromMtbAartListModule.class,
|
||||
MainSettingsModule.class,
|
||||
DialogInfoSituazioneArticoloModule.class
|
||||
DialogInfoSituazioneArticoloModule.class,
|
||||
DialogSelectArtToOrderModule.class
|
||||
})
|
||||
public interface MainApplicationComponent {
|
||||
|
||||
@@ -258,8 +261,6 @@ public interface MainApplicationComponent {
|
||||
|
||||
DialogSelectDocInfoComponent.Factory dialogSelectDocInfoNewViewComponent();
|
||||
|
||||
DialogSelectDocRowsComponent.Factory dialogSelectDocRowsComponent();
|
||||
|
||||
DocInterniEditFormComponent.Factory docInterniEditFormComponent();
|
||||
|
||||
InfoAggiuntiveLUDialogComponent.Factory infoAggiuntiveLUDialogComponent();
|
||||
@@ -294,6 +295,10 @@ public interface MainApplicationComponent {
|
||||
|
||||
DialogInfoSituazioneArticoloComponent.Factory dialogInfoSituazioneArticoloComponent();
|
||||
|
||||
DialogSelectDocRowsComponent.Factory dialogSelectDocRowsNewComponent();
|
||||
|
||||
DialogSelectArtToOrderComponent.Factory dialogSelectArtToOrderNewComponent();
|
||||
|
||||
void inject(MainApplication mainApplication);
|
||||
|
||||
void inject(AppContext mainApplication);
|
||||
|
||||
@@ -201,7 +201,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
|
||||
.setID(it.integry.integrywmsnative.R.id.nav_pv_doc_interni)
|
||||
.setTitleText(it.integry.integrywmsnative.R.string.doc_interni)
|
||||
.setTitleIcon(R.drawable.ic_dashboard_contab_doc_interni)
|
||||
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_contab_doc_interni)
|
||||
.setDrawerIcon(R.drawable.ic_documents_outline)
|
||||
.setFragmentFactory(DocInterniFragment::newInstance))
|
||||
|
||||
// .addItem(new MenuItem()
|
||||
|
||||
@@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.context;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.google.firebase.crashlytics.FirebaseCrashlytics;
|
||||
import com.orhanobut.logger.AndroidLogAdapter;
|
||||
import com.orhanobut.logger.DiskLogAdapter;
|
||||
@@ -91,6 +92,32 @@ public class AppContext {
|
||||
logsFolder = new File(mApplicationContext.getExternalFilesDir(null).getAbsolutePath());
|
||||
int maxBytesSize = 5 * 1024 * 1024;
|
||||
Logger.addLogAdapter(new DiskLogAdapter(logsFolder, maxBytesSize));
|
||||
|
||||
removeOldLogs(logsFolder);
|
||||
}
|
||||
|
||||
private void removeOldLogs(File logsFolder) {
|
||||
var files = logsFolder.listFiles();
|
||||
|
||||
if (files == null || files.length <= 1)
|
||||
return;
|
||||
|
||||
var logFiles = Stream.of(files)
|
||||
.sortBy(x -> -1 * x.lastModified())
|
||||
.skip(1)
|
||||
.toList();
|
||||
|
||||
for (var logFile : logFiles) {
|
||||
boolean isDeleted = logFile.delete();
|
||||
}
|
||||
|
||||
files = logsFolder.listFiles();
|
||||
|
||||
if (files == null || files.length > 1)
|
||||
return;
|
||||
|
||||
final boolean isRenamed = files[0].renameTo(new File(files[0].getParentFile().getAbsolutePath() + "/" + "logs_0.csv"));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -39,6 +39,9 @@ public class ColliDataRecoverService {
|
||||
if(isFilePresent(CommonConst.Files.RECOVER_COLLO_FILE)) {
|
||||
loadLocalFile();
|
||||
}
|
||||
|
||||
if(mtbColtsSessions == null)
|
||||
mtbColtsSessions = new ArrayList<>();
|
||||
}
|
||||
|
||||
public boolean thereIsAnExistantSession() {
|
||||
@@ -47,7 +50,6 @@ public class ColliDataRecoverService {
|
||||
|
||||
public List<Integer> getAllSessionIDs() {
|
||||
if(thereIsAnExistantSession()) {
|
||||
|
||||
return Stream.of(mtbColtsSessions)
|
||||
.map(ColliDataRecoverDTO::getId)
|
||||
.toList();
|
||||
@@ -56,7 +58,6 @@ public class ColliDataRecoverService {
|
||||
}
|
||||
|
||||
public ColliDataRecoverDTO getSession(Integer sessionID) {
|
||||
|
||||
if(sessionID == null) return null;
|
||||
|
||||
return getIfExists(sessionID);
|
||||
|
||||
@@ -40,8 +40,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
|
||||
InventarioRoomDTO.class,
|
||||
InventarioRowRoomDTO.class
|
||||
},
|
||||
version = 14,
|
||||
exportSchema = true)
|
||||
version = 17)
|
||||
@TypeConverters({
|
||||
DateConverter.class,
|
||||
BigDecimalConverter.class,
|
||||
@@ -67,7 +66,10 @@ public abstract class AppDatabase extends RoomDatabase {
|
||||
.addMigrations(MIGRATION_10_11)
|
||||
.addMigrations(MIGRATION_11_12)
|
||||
.addMigrations(MIGRATION_12_13)
|
||||
.addMigrations(MIGRATION_13_14);
|
||||
.addMigrations(MIGRATION_13_14)
|
||||
.addMigrations(MIGRATION_14_15)
|
||||
.addMigrations(MIGRATION_15_16)
|
||||
.addMigrations(MIGRATION_16_17);
|
||||
|
||||
sInstance = builder.build();
|
||||
}
|
||||
@@ -135,4 +137,45 @@ public abstract class AppDatabase extends RoomDatabase {
|
||||
+ " ADD COLUMN new INTEGER");
|
||||
}
|
||||
};
|
||||
|
||||
static final Migration MIGRATION_14_15 = new Migration(14, 15) {
|
||||
@Override
|
||||
public void migrate(@NonNull SupportSQLiteDatabase database) {
|
||||
// rimuovo vincoli "not null" dai campi id_griglia e cod_alis
|
||||
database.execSQL("DROP TABLE IF EXISTS ordini_tmp;");
|
||||
database.execSQL("CREATE TABLE ordini_tmp (ordine_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, data_ins INTEGER, annotazioni TEXT, transmitted INTEGER NOT NULL, transmission_date INTEGER, gestione TEXT, data_ord INTEGER, num_ord INTEGER, cod_mdep TEXT, id_griglia INTEGER, cod_alis TEXT);");
|
||||
database.execSQL("INSERT INTO ordini_tmp(ordine_id,data_ins,annotazioni,transmitted,transmission_date,gestione,data_ord,num_ord,cod_mdep,id_griglia,cod_alis) SELECT ordini.ordine_id,ordini.data_ins,ordini.annotazioni,ordini.transmitted,ordini.transmission_date,ordini.gestione,ordini.data_ord,ordini.num_ord,ordini.cod_mdep,ordini.id_griglia,griglie.cod_alis from ordini left outer join griglie on ordini.id_griglia = griglie.griglia_id;");
|
||||
database.execSQL("DROP TABLE ordini;");
|
||||
database.execSQL("ALTER TABLE ordini_tmp RENAME TO ordini;");
|
||||
// aggiungo campo cod_alis sulle righe dell'ordine
|
||||
database.execSQL("DROP TABLE IF EXISTS art_ord_tmp;");
|
||||
database.execSQL("CREATE TABLE IF NOT EXISTS art_ord_tmp( articolo_ordine_id INTEGER PRIMARY KEY AUTOINCREMENT, cod_mart TEXT, descrizione TEXT, unt_mis TEXT, qta_cnf REAL NOT NULL, bar_code TEXT, merce_da_ric REAL NOT NULL, media_sett REAL NOT NULL, flag_qta_multipla TEXT, qta_min_ordinabile REAL NOT NULL, id_ordine INTEGER NOT NULL, qta_ord REAL NOT NULL, data_ins INTEGER, new_no_promo INTEGER NOT NULL, system_note TEXT, cod_alis TEXT , FOREIGN KEY(id_ordine) REFERENCES ordini(ordine_id) ON UPDATE NO ACTION ON DELETE CASCADE );");
|
||||
database.execSQL("INSERT INTO art_ord_tmp(articolo_ordine_id, cod_mart, descrizione, unt_mis, qta_cnf, bar_code, merce_da_ric, media_sett, flag_qta_multipla, qta_min_ordinabile, id_ordine, qta_ord, data_ins, new_no_promo, system_note, cod_alis) SELECT articolo_ordine_id, cod_mart, descrizione, unt_mis, qta_cnf, bar_code, merce_da_ric, media_sett, flag_qta_multipla, qta_min_ordinabile, id_ordine, qta_ord, data_ins, new_no_promo, system_note, null from articoli_ordine;");
|
||||
database.execSQL("DROP TABLE articoli_ordine;");
|
||||
database.execSQL("ALTER TABLE art_ord_tmp RENAME TO articoli_ordine;");
|
||||
database.execSQL("CREATE INDEX IF NOT EXISTS index_articoli_ordine_id_ordine ON articoli_ordine (id_ordine);");
|
||||
database.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS index_articoli_ordine_id_ordine_cod_mart ON articoli_ordine (id_ordine, cod_mart);");
|
||||
}
|
||||
};
|
||||
static final Migration MIGRATION_15_16 = new Migration(15, 16) {
|
||||
@Override
|
||||
public void migrate(@NonNull SupportSQLiteDatabase database) {
|
||||
}
|
||||
};
|
||||
static final Migration MIGRATION_16_17 = new Migration(16, 17) {
|
||||
@Override
|
||||
public void migrate(@NonNull SupportSQLiteDatabase database) {
|
||||
database.execSQL("ALTER TABLE inventario_rows RENAME TO _inventario_rows_old;");
|
||||
database.execSQL("DROP INDEX index_inventario_rows__id;");
|
||||
database.execSQL("DROP INDEX index_inventario_rows_parent_id;");
|
||||
|
||||
database.execSQL("CREATE TABLE inventario_rows (_id INTEGER PRIMARY KEY AUTOINCREMENT, parent_id INTEGER, cod_mart TEXT, partita_mag TEXT, descrizione TEXT, qta REAL NOT NULL DEFAULT 0, num_cnf REAL NOT NULL DEFAULT 0, qta_cnf REAL NOT NULL DEFAULT 0, unt_mis TEXT NOT NULL DEFAULT '0', data_ora_inv INTEGER, scan_cod_barre TEXT, zona TEXT, remote_sync_date INTEGER, FOREIGN KEY(parent_id) REFERENCES inventari(_id) ON UPDATE NO ACTION ON DELETE CASCADE);");
|
||||
|
||||
database.execSQL("INSERT INTO inventario_rows SELECT * FROM _inventario_rows_old;");
|
||||
|
||||
database.execSQL("CREATE INDEX index_inventario_rows__id ON inventario_rows (_id);");
|
||||
database.execSQL("CREATE INDEX index_inventario_rows_parent_id ON inventario_rows (parent_id)");
|
||||
database.execSQL("DROP TABLE _inventario_rows_old;");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -24,6 +24,6 @@ public interface MtbColrDao {
|
||||
@Delete
|
||||
void delete(SqlMtbColr mtbColr);
|
||||
|
||||
@Query("SELECT * from mtb_colr where id_collo = :idDocument")
|
||||
@Query("SELECT * FROM mtb_colr WHERE id_collo = :idDocument ORDER BY id DESC")
|
||||
List<SqlMtbColr> getDocumentRows(long idDocument);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.dao;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.room.Dao;
|
||||
import androidx.room.Delete;
|
||||
import androidx.room.Insert;
|
||||
@@ -33,7 +34,7 @@ public interface MtbColtDao {
|
||||
" AND ( mtb_colt.data_doc = :dataDoc OR (mtb_colt.data_doc is null and :dataDoc is null)) " +
|
||||
" AND ( mtb_colt.num_doc = :numDoc OR (mtb_colt.num_doc is null and :numDoc is null)) " +
|
||||
" and cod_dtip is null group by mtb_colt.id")
|
||||
List<DocInternoWrapper> getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc);
|
||||
LiveData<List<DocInternoWrapper>> getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc);
|
||||
|
||||
@Query("SELECT ifnull(MAX(num_collo),0) +1 as num_collo from mtb_colt")
|
||||
Integer getNextNumCollo();
|
||||
|
||||
@@ -19,7 +19,7 @@ public interface OrdineDao {
|
||||
@Query("SELECT ordini.* from ordini where ordini.transmitted = 1")
|
||||
List<Ordine> getAllTrasnmitted();
|
||||
|
||||
@Query("SELECT ordini.*, count(articolo_ordine_id) as countArticoli from ordini left join articoli_ordine ON ordini.ordine_id = articoli_ordine.id_ordine where ordini.transmitted = 0 and ordini.cod_alis = :codAlis group by ordini.ordine_id")
|
||||
@Query("SELECT ordini.*, count(articolo_ordine_id) as countArticoli from ordini left join articoli_ordine ON ordini.ordine_id = articoli_ordine.id_ordine where ordini.transmitted = 0 and ((:codAlis is null and ordini.cod_alis is null) OR (ordini.cod_alis = :codAlis)) group by ordini.ordine_id")
|
||||
List<OrdineWrapper> getAllOpenOrdersByGriglia(String codAlis);
|
||||
|
||||
@Insert
|
||||
|
||||
@@ -73,6 +73,9 @@ public class ArticoloOrdine {
|
||||
@ColumnInfo(name = "system_note")
|
||||
private String systemNote;
|
||||
|
||||
@ColumnInfo(name = "cod_alis")
|
||||
private String codAlis;
|
||||
|
||||
@Ignore
|
||||
private int ggScadenza = 0;
|
||||
|
||||
@@ -85,9 +88,15 @@ public class ArticoloOrdine {
|
||||
@Ignore
|
||||
private BigDecimal qtaProposta = BigDecimal.ZERO;
|
||||
|
||||
@Ignore
|
||||
private BigDecimal ctMaxOrd = BigDecimal.ZERO;
|
||||
|
||||
@Ignore
|
||||
private int bgTint;
|
||||
|
||||
@Ignore
|
||||
private boolean invalid = false;
|
||||
|
||||
|
||||
public Integer getArticoloOrdineId() {
|
||||
return articoloOrdineId;
|
||||
@@ -230,15 +239,15 @@ public class ArticoloOrdine {
|
||||
}
|
||||
|
||||
public BigDecimal getQtaCnfPrevistaVendita() {
|
||||
return qtaPrevistaVendita.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaPrevistaVendita.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING);
|
||||
return qtaPrevistaVendita == null || qtaPrevistaVendita.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaPrevistaVendita.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING);
|
||||
}
|
||||
|
||||
public BigDecimal getQtaCnfProposta() {
|
||||
return qtaProposta.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaProposta.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING);
|
||||
return qtaProposta == null || qtaProposta.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaProposta.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING);
|
||||
}
|
||||
|
||||
public BigDecimal getQtaCnfGiacenza() {
|
||||
return giacenza.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : giacenza.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING);
|
||||
return giacenza == null || giacenza.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : giacenza.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING);
|
||||
}
|
||||
|
||||
public boolean isNewNoPromo() {
|
||||
@@ -277,4 +286,30 @@ public class ArticoloOrdine {
|
||||
public void setSystemNote(String systemNote) {
|
||||
this.systemNote = systemNote;
|
||||
}
|
||||
|
||||
public String getCodAlis() {
|
||||
return codAlis;
|
||||
}
|
||||
|
||||
public void setCodAlis(String codAlis) {
|
||||
this.codAlis = codAlis;
|
||||
}
|
||||
|
||||
public BigDecimal getCtMaxOrd() {
|
||||
return ctMaxOrd;
|
||||
}
|
||||
|
||||
public ArticoloOrdine setCtMaxOrd(BigDecimal ctMaxOrd) {
|
||||
this.ctMaxOrd = ctMaxOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isInvalid() {
|
||||
return invalid;
|
||||
}
|
||||
|
||||
public ArticoloOrdine setInvalid(boolean invalid) {
|
||||
this.invalid = invalid;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,8 @@ import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityModelInte
|
||||
@ForeignKey(
|
||||
entity = InventarioRoomDTO.class,
|
||||
parentColumns = {BaseSyncDTO.Columns.ID},
|
||||
childColumns = {InventarioRowRoomDTO.Columns.PARENT_ID}
|
||||
childColumns = {InventarioRowRoomDTO.Columns.PARENT_ID},
|
||||
onDelete = ForeignKey.CASCADE
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.entity;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
@@ -52,10 +51,10 @@ public class Ordine {
|
||||
private boolean orderNewProducts = false;
|
||||
|
||||
@ColumnInfo(name = "id_griglia")
|
||||
private int idGriglia;
|
||||
@Nullable
|
||||
private Integer idGriglia;
|
||||
|
||||
@ColumnInfo(name = "cod_alis")
|
||||
@NonNull
|
||||
private String codAlis;
|
||||
|
||||
public int getOrdineId() {
|
||||
@@ -82,11 +81,11 @@ public class Ordine {
|
||||
this.annotazioni = annotazioni;
|
||||
}
|
||||
|
||||
public int getIdGriglia() {
|
||||
public Integer getIdGriglia() {
|
||||
return idGriglia;
|
||||
}
|
||||
|
||||
public void setIdGriglia(int idGriglia) {
|
||||
public void setIdGriglia(Integer idGriglia) {
|
||||
this.idGriglia = idGriglia;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.repository;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@@ -17,7 +19,7 @@ public interface MtbColtRepository {
|
||||
|
||||
void delete(SqlMtbColt mtbColt, Runnable onSuccess, RunnableArgs<Exception> onError);
|
||||
|
||||
void getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc, RunnableArgs<List<DocInternoWrapper>> onSuccess, RunnableArgs<Exception> onError);
|
||||
LiveData<List<DocInternoWrapper>> getDocuments(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc);
|
||||
|
||||
void getNextNumCollo(RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError);
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.data_store.db.repository.datasource;
|
||||
|
||||
import android.os.Handler;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
@@ -50,10 +52,8 @@ public class SqlMtbColtDataSource extends BaseDataSource implements MtbColtRepos
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc, RunnableArgs<List<DocInternoWrapper>> onSuccess, RunnableArgs<Exception> onError) {
|
||||
execute(() -> mMtbColtDao.getLocalDocumentsByCodDtip(codDtip, codAnag, codVdes, dataDoc, numDoc),
|
||||
onSuccess,
|
||||
onError);
|
||||
public LiveData<List<DocInternoWrapper>> getDocuments(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc) {
|
||||
return mMtbColtDao.getLocalDocumentsByCodDtip(codDtip, codAnag, codVdes, dataDoc, numDoc);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -58,7 +58,7 @@ public abstract class _BaseRepository<
|
||||
.collect(Collectors.toList());
|
||||
|
||||
var dataToDelete = finalLocalData.stream()
|
||||
.filter(x -> x.isSyncronized() && finalRemoteData.stream().noneMatch(y -> keyComparator.run(y, x)))
|
||||
.filter(x -> finalRemoteData.stream().noneMatch(y -> keyComparator.run(y, x)))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
var dataToInsert = finalRemoteData.stream()
|
||||
|
||||
@@ -1,218 +0,0 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.view_model;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashMap;
|
||||
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
|
||||
public class ArticoloDTO {
|
||||
|
||||
public String codMart;
|
||||
public String descrizione;
|
||||
public String untMis;
|
||||
public float qtaCnf;
|
||||
public String barcode;
|
||||
public float merceDaRic;
|
||||
public float mediaSett;
|
||||
public String flagQtaMultipla;
|
||||
public String flagTracciabilita;
|
||||
public float qtaMinOrdinabile;
|
||||
public boolean newNoPromo;
|
||||
private int ggScadenza;
|
||||
private float giacenza;
|
||||
private float qtaPrevistaVendita;
|
||||
private float qtaProposta;
|
||||
private float qtaOrd;
|
||||
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
}
|
||||
|
||||
public void setCodMart(String codMart) {
|
||||
this.codMart = codMart;
|
||||
}
|
||||
|
||||
public String getDescrizione() {
|
||||
return descrizione;
|
||||
}
|
||||
|
||||
public void setDescrizione(String descrizione) {
|
||||
this.descrizione = descrizione;
|
||||
}
|
||||
|
||||
public String getUntMis() {
|
||||
return untMis;
|
||||
}
|
||||
|
||||
public void setUntMis(String untMis) {
|
||||
this.untMis = untMis;
|
||||
}
|
||||
|
||||
public float getQtaCnf() {
|
||||
return qtaCnf;
|
||||
}
|
||||
|
||||
public void setQtaCnf(float qtaCnf) {
|
||||
this.qtaCnf = qtaCnf;
|
||||
}
|
||||
|
||||
public String getBarCode() {
|
||||
return barcode;
|
||||
}
|
||||
|
||||
public void setBarCode(String barCode) {
|
||||
this.barcode = barCode;
|
||||
}
|
||||
|
||||
public float getMerceDaRic() {
|
||||
return merceDaRic;
|
||||
}
|
||||
|
||||
public void setMerceDaRic(float merceDaRic) {
|
||||
this.merceDaRic = merceDaRic;
|
||||
}
|
||||
|
||||
public float getMediaSett() {
|
||||
return mediaSett;
|
||||
}
|
||||
|
||||
public void setMediaSett(float mediaSett) {
|
||||
this.mediaSett = mediaSett;
|
||||
}
|
||||
|
||||
public String getFlagQtaMultipla() {
|
||||
return flagQtaMultipla;
|
||||
}
|
||||
|
||||
public void setFlagQtaMultipla(String flagQtaMultipla) {
|
||||
this.flagQtaMultipla = flagQtaMultipla;
|
||||
}
|
||||
|
||||
public float getQtaMinOrdinabile() {
|
||||
return qtaMinOrdinabile;
|
||||
}
|
||||
|
||||
public void setQtaMinOrdinabile(float qtaMinOrdinabile) {
|
||||
this.qtaMinOrdinabile = qtaMinOrdinabile;
|
||||
}
|
||||
|
||||
public String getBarcode() {
|
||||
return barcode;
|
||||
}
|
||||
|
||||
public void setBarcode(String barcode) {
|
||||
this.barcode = barcode;
|
||||
}
|
||||
|
||||
public int getGgScadenza() {
|
||||
return ggScadenza;
|
||||
}
|
||||
|
||||
public void setGgScadenza(int ggScadenza) {
|
||||
this.ggScadenza = ggScadenza;
|
||||
}
|
||||
|
||||
public float getGiacenza() {
|
||||
return giacenza;
|
||||
}
|
||||
|
||||
public void setGiacenza(float giacenza) {
|
||||
this.giacenza = giacenza;
|
||||
}
|
||||
|
||||
public float getQtaPrevistaVendita() {
|
||||
return qtaPrevistaVendita;
|
||||
}
|
||||
|
||||
public void setQtaPrevistaVendita(float qtaPrevistaVendita) {
|
||||
this.qtaPrevistaVendita = qtaPrevistaVendita;
|
||||
}
|
||||
|
||||
public float getQtaProposta() {
|
||||
return qtaProposta;
|
||||
}
|
||||
|
||||
public void setQtaProposta(float qtaProposta) {
|
||||
this.qtaProposta = qtaProposta;
|
||||
}
|
||||
|
||||
public String getFlagTracciabilita() {
|
||||
return flagTracciabilita;
|
||||
}
|
||||
|
||||
public ArticoloDTO setFlagTracciabilita(String flagTracciabilita) {
|
||||
this.flagTracciabilita = flagTracciabilita;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isNewNoPromo() {
|
||||
return newNoPromo;
|
||||
}
|
||||
|
||||
public ArticoloDTO setNewNoPromo(boolean newNoPromo) {
|
||||
this.newNoPromo = newNoPromo;
|
||||
return this;
|
||||
}
|
||||
|
||||
public float getQtaOrd() {
|
||||
return qtaOrd;
|
||||
}
|
||||
|
||||
public ArticoloDTO setQtaOrd(float qtaOrd) {
|
||||
this.qtaOrd = qtaOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ArticoloOrdine convertToArticoloOrdine(Ordine ordine) {
|
||||
ArticoloOrdine articolo = new ArticoloOrdine();
|
||||
|
||||
articolo.setIdOrdine(ordine.getOrdineId());
|
||||
|
||||
articolo.setBarCode(this.getBarCode());
|
||||
articolo.setCodMart(this.getCodMart());
|
||||
articolo.setMediaSett(this.getMediaSett());
|
||||
articolo.setFlagQtaMultipla(this.getFlagQtaMultipla());
|
||||
articolo.setQtaMinOrdinabile(this.getQtaMinOrdinabile());
|
||||
articolo.setMerceDaRic(this.getMerceDaRic());
|
||||
articolo.setQtaCnf(this.getQtaCnf());
|
||||
articolo.setUntMis(this.getUntMis());
|
||||
articolo.setDescrizione(this.getDescrizione());
|
||||
articolo.setDataIns(UtilityDate.getDateInstance());
|
||||
articolo.setGgScadenza(this.getGgScadenza());
|
||||
articolo.setGiacenza(BigDecimal.valueOf(this.getGiacenza()));
|
||||
articolo.setQtaPrevistaVendita(BigDecimal.valueOf(this.getQtaPrevistaVendita()));
|
||||
articolo.setQtaProposta(BigDecimal.valueOf(this.getQtaProposta()));
|
||||
articolo.setNewNoPromo(this.isNewNoPromo());
|
||||
articolo.setSystemNote(generateSystemNote());
|
||||
articolo.setQtaOrd(this.getQtaOrd());
|
||||
|
||||
return articolo;
|
||||
}
|
||||
|
||||
public String generateSystemNote() {
|
||||
HashMap<String, String> pairs = new HashMap<>();
|
||||
pairs.put("qta_proposta", String.valueOf(qtaProposta));
|
||||
pairs.put("giacenza", String.valueOf(giacenza));
|
||||
|
||||
return new JSONObject(pairs).toString();
|
||||
}
|
||||
|
||||
|
||||
public int getSortByBarcodeCondition(String barcode) {
|
||||
if (codMart.equalsIgnoreCase(barcode))
|
||||
return 1;
|
||||
if (barcode != null) {
|
||||
if (barcode.equalsIgnoreCase(barcode))
|
||||
return 2;
|
||||
if (StringUtils.leftPad(barcode, 13, "0").equalsIgnoreCase(barcode))
|
||||
return 3;
|
||||
}
|
||||
return 100;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,224 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.view_model;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class ArticoloOrdinabileDTO {
|
||||
|
||||
|
||||
private String codAlis;
|
||||
private String codMart;
|
||||
private String descrizione;
|
||||
private String untMis;
|
||||
private float qtaCnf;
|
||||
private float merceDaRic;
|
||||
private float mediaSett;
|
||||
private String flagQtaMultipla;
|
||||
private String flagTracciabilita;
|
||||
private String flagQtaCnfFissa;
|
||||
private boolean newNoPromo;
|
||||
private float qtaMinOrdinabile;
|
||||
private int ggScadenza;
|
||||
private BigDecimal giacenza;
|
||||
private BigDecimal qtaPrevistaVendita;
|
||||
private BigDecimal qtaProposta;
|
||||
private float qtaOrd;
|
||||
|
||||
private float ctMaxOrd;
|
||||
|
||||
private List<String> barcode;
|
||||
|
||||
private String selectedBarcode;
|
||||
|
||||
public String getCodAlis() {
|
||||
return codAlis;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setCodAlis(String codAlis) {
|
||||
this.codAlis = codAlis;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setCodMart(String codMart) {
|
||||
this.codMart = codMart;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizione() {
|
||||
return descrizione;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setDescrizione(String descrizione) {
|
||||
this.descrizione = descrizione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getUntMis() {
|
||||
return untMis;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setUntMis(String untMis) {
|
||||
this.untMis = untMis;
|
||||
return this;
|
||||
}
|
||||
|
||||
public float getQtaCnf() {
|
||||
return qtaCnf;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setQtaCnf(float qtaCnf) {
|
||||
this.qtaCnf = qtaCnf;
|
||||
return this;
|
||||
}
|
||||
|
||||
public float getMerceDaRic() {
|
||||
return merceDaRic;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setMerceDaRic(float merceDaRic) {
|
||||
this.merceDaRic = merceDaRic;
|
||||
return this;
|
||||
}
|
||||
|
||||
public float getMediaSett() {
|
||||
return mediaSett;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setMediaSett(float mediaSett) {
|
||||
this.mediaSett = mediaSett;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getFlagQtaMultipla() {
|
||||
return flagQtaMultipla;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setFlagQtaMultipla(String flagQtaMultipla) {
|
||||
this.flagQtaMultipla = flagQtaMultipla;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getFlagTracciabilita() {
|
||||
return flagTracciabilita;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setFlagTracciabilita(String flagTracciabilita) {
|
||||
this.flagTracciabilita = flagTracciabilita;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getFlagQtaCnfFissa() {
|
||||
return flagQtaCnfFissa;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setFlagQtaCnfFissa(String flagQtaCnfFissa) {
|
||||
this.flagQtaCnfFissa = flagQtaCnfFissa;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isNewNoPromo() {
|
||||
return newNoPromo;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setNewNoPromo(boolean newNoPromo) {
|
||||
this.newNoPromo = newNoPromo;
|
||||
return this;
|
||||
}
|
||||
|
||||
public float getQtaMinOrdinabile() {
|
||||
return qtaMinOrdinabile;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setQtaMinOrdinabile(float qtaMinOrdinabile) {
|
||||
this.qtaMinOrdinabile = qtaMinOrdinabile;
|
||||
return this;
|
||||
}
|
||||
|
||||
public int getGgScadenza() {
|
||||
return ggScadenza;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setGgScadenza(int ggScadenza) {
|
||||
this.ggScadenza = ggScadenza;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getGiacenza() {
|
||||
return giacenza;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setGiacenza(BigDecimal giacenza) {
|
||||
this.giacenza = giacenza;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaPrevistaVendita() {
|
||||
return qtaPrevistaVendita;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setQtaPrevistaVendita(BigDecimal qtaPrevistaVendita) {
|
||||
this.qtaPrevistaVendita = qtaPrevistaVendita;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaProposta() {
|
||||
return qtaProposta;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setQtaProposta(BigDecimal qtaProposta) {
|
||||
this.qtaProposta = qtaProposta;
|
||||
return this;
|
||||
}
|
||||
|
||||
public float getQtaOrd() {
|
||||
return qtaOrd;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setQtaOrd(float qtaOrd) {
|
||||
this.qtaOrd = qtaOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public float getCtMaxOrd() {
|
||||
return ctMaxOrd;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setCtMaxOrd(float ctMaxOrd) {
|
||||
this.ctMaxOrd = ctMaxOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<String> getBarcode() {
|
||||
return barcode;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setBarcode(List<String> barcode) {
|
||||
this.barcode = barcode;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String generateSystemNote() {
|
||||
HashMap<String, String> pairs = new HashMap<>();
|
||||
pairs.put("qta_proposta", String.valueOf(qtaProposta));
|
||||
pairs.put("giacenza", String.valueOf(giacenza));
|
||||
|
||||
return new JSONObject(pairs).toString();
|
||||
}
|
||||
|
||||
public String getSelectedBarcode() {
|
||||
return selectedBarcode;
|
||||
}
|
||||
|
||||
public ArticoloOrdinabileDTO setSelectedBarcode(String selectedBarcode) {
|
||||
this.selectedBarcode = selectedBarcode;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.view_model;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
|
||||
|
||||
public class GrigliaDTO {
|
||||
private String descrLisa;
|
||||
private String descrDepo;
|
||||
private List<ArticoloDTO> grigliaAcquistiChild;
|
||||
|
||||
|
||||
public String getDescrLisa() {
|
||||
return descrLisa;
|
||||
}
|
||||
|
||||
public void setDescrLisa(String descrLisa) {
|
||||
this.descrLisa = descrLisa;
|
||||
}
|
||||
|
||||
public String getDescrDepo() {
|
||||
return descrDepo;
|
||||
}
|
||||
|
||||
public void setDescrDepo(String descrDepo) {
|
||||
this.descrDepo = descrDepo;
|
||||
}
|
||||
|
||||
public List<ArticoloDTO> getGrigliaAcquistiChild() {
|
||||
return grigliaAcquistiChild;
|
||||
}
|
||||
|
||||
public void setGrigliaAcquistiChild(List<ArticoloDTO> grigliaAcquistiChild) {
|
||||
this.grigliaAcquistiChild = grigliaAcquistiChild;
|
||||
}
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.view_model;
|
||||
|
||||
import androidx.room.Embedded;
|
||||
import androidx.room.Ignore;
|
||||
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
|
||||
public class OrdineWithGriglia {
|
||||
|
||||
@Embedded
|
||||
private Ordine ordine;
|
||||
@Embedded
|
||||
private Griglia griglia;
|
||||
|
||||
|
||||
public Ordine getOrdine() {
|
||||
return ordine;
|
||||
}
|
||||
|
||||
public void setOrdine(Ordine ordine) {
|
||||
this.ordine = ordine;
|
||||
}
|
||||
|
||||
public Griglia getGriglia() {
|
||||
return griglia;
|
||||
}
|
||||
|
||||
public void setGriglia(Griglia griglia) {
|
||||
this.griglia = griglia;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.view_model;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class OrdiniAcquistoGrigliaDTO {
|
||||
private String descrLisa;
|
||||
|
||||
private String descrDepo;
|
||||
|
||||
private List<ArticoloOrdinabileDTO> articoli;
|
||||
|
||||
public String getDescrLisa() {
|
||||
return descrLisa;
|
||||
}
|
||||
|
||||
public OrdiniAcquistoGrigliaDTO setDescrLisa(String descrLisa) {
|
||||
this.descrLisa = descrLisa;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrDepo() {
|
||||
return descrDepo;
|
||||
}
|
||||
|
||||
public OrdiniAcquistoGrigliaDTO setDescrDepo(String descrDepo) {
|
||||
this.descrDepo = descrDepo;
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<ArticoloOrdinabileDTO> getArticoli() {
|
||||
return articoli;
|
||||
}
|
||||
|
||||
public OrdiniAcquistoGrigliaDTO setArticoli(List<ArticoloOrdinabileDTO> articoli) {
|
||||
this.articoli = articoli;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
package it.integry.integrywmsnative.core.di;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
|
||||
import androidx.databinding.BaseObservable;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import it.integry.integrywmsnative.core.CommonConst;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||
|
||||
@@ -20,7 +19,7 @@ public class BindableFloat extends BaseObservable {
|
||||
|
||||
if(numberOfDigits > CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS) numberOfDigits = CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS;
|
||||
|
||||
return new BigDecimal(get());
|
||||
return BigDecimal.valueOf(get());
|
||||
}
|
||||
|
||||
public Float get(boolean defaultIfNull) {
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package it.integry.integrywmsnative.core.exception;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public final class EmptyOrderException extends Exception {
|
||||
public EmptyOrderException() {
|
||||
super(UtilityResources.getString(R.string.empty_order));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package it.integry.integrywmsnative.core.exception;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public final class ExpiredProductListException extends Exception {
|
||||
public ExpiredProductListException() {
|
||||
super(UtilityResources.getString(R.string.expired_list_session));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package it.integry.integrywmsnative.core.exception;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public final class InvalidProductOrderedException extends Exception {
|
||||
|
||||
public InvalidProductOrderedException() {
|
||||
super(UtilityResources.getString(R.string.invalid_product_ordered));
|
||||
}
|
||||
|
||||
public InvalidProductOrderedException(String product) {
|
||||
super(UtilityResources.getString(R.string.invalid_product_ordered) + " (" + product + ")");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package it.integry.integrywmsnative.core.exception;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public class MaxQtyExceededException extends Exception {
|
||||
|
||||
public MaxQtyExceededException() {
|
||||
super(UtilityResources.getString(R.string.max_qty_exceeded));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package it.integry.integrywmsnative.core.exception;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public final class MultipleResultFromBarcodeException extends Exception {
|
||||
|
||||
public MultipleResultFromBarcodeException() {
|
||||
super(UtilityResources.getString(R.string.multiple_results_from_barcode));
|
||||
}
|
||||
|
||||
public MultipleResultFromBarcodeException(String barcode) {
|
||||
super(UtilityResources.getString(R.string.multiple_results_from_barcode) + " (" + barcode + ")");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package it.integry.integrywmsnative.core.exception;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public final class NoResultFromCodMartException extends Exception {
|
||||
|
||||
public NoResultFromCodMartException() {
|
||||
super(UtilityResources.getString(R.string.no_result_from_cod_mart));
|
||||
}
|
||||
|
||||
public NoResultFromCodMartException(String codMart) {
|
||||
super(UtilityResources.getString(R.string.no_result_from_cod_mart) + " (" + codMart + ")");
|
||||
}
|
||||
}
|
||||
@@ -27,6 +27,20 @@ public class BaseDialogFragment extends DialogFragment implements DialogInterfac
|
||||
|
||||
private boolean mBarcodeListener = false;
|
||||
|
||||
private boolean cancelable = true;
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isCancelable() {
|
||||
return cancelable;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setCancelable(boolean cancelable) {
|
||||
super.setCancelable(cancelable);
|
||||
this.cancelable = cancelable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show(FragmentManager manager, String tag) {
|
||||
|
||||
@@ -68,28 +68,6 @@ public class MtbColt extends EntityBase {
|
||||
private Boolean disablePrint;
|
||||
private String ragSocCliente;
|
||||
|
||||
public void generaFiltroOrdine() throws Exception {
|
||||
|
||||
if (this.gestione == null) {
|
||||
throw new Exception("Impossibile creare il filtro dell'ordine se la gestione non è valorizzata");
|
||||
}
|
||||
|
||||
if (this.dataOrd == null) {
|
||||
throw new Exception("Impossibile creare il filtro dell'ordine se la data dell'ordine non è valorizzata");
|
||||
}
|
||||
|
||||
if (this.numOrd == null) {
|
||||
throw new Exception("Impossibile creare il filtro dell'ordine se il numero dell'ordine non è valorizzato");
|
||||
}
|
||||
|
||||
|
||||
Date dateOrd = UtilityDate.recognizeDate(this.dataOrd);
|
||||
String dateYMD = UtilityDate.formatDate(dateOrd, UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH);
|
||||
|
||||
this.filtroOrdini = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ROOT><FILTER><DTB_ORDT><GESTIONE type=\"V\">" + this.gestione + "</GESTIONE><DATA_ORD type=\"D\">" + dateYMD + "</DATA_ORD><NUM_ORD type=\"N\">" + this.numOrd + "</NUM_ORD></DTB_ORDT></FILTER></ROOT>";
|
||||
}
|
||||
|
||||
|
||||
private ObservableArrayList<MtbColr> mtbColr = new ObservableArrayList<>();
|
||||
|
||||
public ObservableArrayList<MtbColr> getMtbColr() {
|
||||
|
||||
@@ -39,7 +39,6 @@ public class MvwSitArtUdcDetInventario {
|
||||
private String codJfas;
|
||||
private MtbAart mtbAart;
|
||||
|
||||
|
||||
public String getGestione() {
|
||||
return gestione;
|
||||
}
|
||||
@@ -283,7 +282,6 @@ public class MvwSitArtUdcDetInventario {
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public MtbColr toMtbColr() {
|
||||
return new MtbColr()
|
||||
.setCodJcom(getCodJcom())
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
@@ -14,6 +15,7 @@ import javax.inject.Singleton;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbGrup;
|
||||
import it.integry.integrywmsnative.core.model.MtbUntMis;
|
||||
import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
|
||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
@@ -58,6 +60,8 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
|
||||
public static void getByCodMartsStatic(List<String> codMartToFind, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
|
||||
String joinedCods = Stream.of(codMartToFind)
|
||||
.withoutNulls()
|
||||
.distinct()
|
||||
.collect(Collectors.joining(","));
|
||||
|
||||
|
||||
@@ -131,8 +135,55 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<MtbGrup>>() {
|
||||
}.getType();
|
||||
this.systemRESTConsumer.processSql("SELECT * FROM mtb_grup " + whereCond, typeOfObjectsList, onComplete, onFailed);
|
||||
|
||||
this.systemRESTConsumer.processSql("SELECT * FROM mtb_grup " + whereCond, typeOfObjectsList, onComplete, onFailed);
|
||||
}
|
||||
|
||||
|
||||
public void getUntMisArts(List<String> inputUntMis, RunnableArgs<List<MtbUntMis>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
List<HashMap<String, Object>> whereCondList = Stream.of(inputUntMis)
|
||||
.distinct()
|
||||
.withoutNulls()
|
||||
.map(x -> {
|
||||
HashMap<String, Object> data = new HashMap<>();
|
||||
data.put("unt_mis", x);
|
||||
return data;
|
||||
})
|
||||
.toList();
|
||||
|
||||
var whereCond = whereCondList.isEmpty() ? "" : " WHERE " + UtilityQuery.concatFieldListInWhereCond(whereCondList);
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<MtbUntMis>>() {
|
||||
}.getType();
|
||||
this.systemRESTConsumer.processSql("SELECT * FROM mtb_unt_mis " + whereCond, typeOfObjectsList, onComplete, onFailed);
|
||||
}
|
||||
|
||||
public void fillMtbAartsWithMtbUntMis(List<MtbAart> inputMtbAart, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
var inputUntMis = new ArrayList<String>();
|
||||
|
||||
if (inputMtbAart != null && !inputMtbAart.isEmpty()) {
|
||||
inputUntMis.addAll(Stream.of(inputMtbAart)
|
||||
.map(MtbAart::getUntMis)
|
||||
.withoutNulls()
|
||||
.distinct()
|
||||
.toList());
|
||||
}
|
||||
|
||||
if (inputUntMis.isEmpty()) {
|
||||
onComplete.run(inputMtbAart);
|
||||
return;
|
||||
}
|
||||
|
||||
getUntMisArts(inputUntMis, mtbUntMiss -> {
|
||||
for (var item : inputMtbAart) {
|
||||
var mtbUntMis = Stream.of(mtbUntMiss).filter(x -> x.getUntMis().equalsIgnoreCase(item.getUntMis()))
|
||||
.findFirstOrElse(null);
|
||||
|
||||
if (mtbUntMis != null)
|
||||
item.setMtbUntMis(Collections.singletonList(mtbUntMis));
|
||||
}
|
||||
|
||||
onComplete.run(inputMtbAart);
|
||||
}, onFailed);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,9 +53,9 @@ public class DocumentRESTConsumer extends _BaseRESTConsumer {
|
||||
|
||||
|
||||
|
||||
public void loadDocumentoAvailableArts(String codDtip, String codMgrp, RunnableArgs<RetrieveDocumentoArtsResponseDTO> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public void loadDocumentAvailableArts(String codDtip, String codMgrp, String codAnagForn, RunnableArgs<RetrieveDocumentoArtsResponseDTO> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
var inventarioRESTConsumerService = RESTBuilder.getService(DocumentiRESTConsumerService.class);
|
||||
inventarioRESTConsumerService.retrieveArts(codDtip, codMgrp)
|
||||
inventarioRESTConsumerService.retrieveArts(codDtip, codMgrp, codAnagForn)
|
||||
.enqueue(new Callback<>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<ServiceRESTResponse<RetrieveDocumentoArtsResponseDTO>> call, @NonNull Response<ServiceRESTResponse<RetrieveDocumentoArtsResponseDTO>> response) {
|
||||
|
||||
@@ -26,6 +26,7 @@ public interface DocumentiRESTConsumerService {
|
||||
@GET("wms/documento/arts")
|
||||
Call<ServiceRESTResponse<RetrieveDocumentoArtsResponseDTO>> retrieveArts(
|
||||
@Query("codDtip") String codDtip,
|
||||
@Query("codMgrp") String codMgrp);
|
||||
@Query("codMgrp") String codMgrp,
|
||||
@Query("codAnagForn") String codAnagForn);
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.rest.consumers;
|
||||
import com.annimon.stream.Optional;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
@@ -13,6 +14,7 @@ import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
||||
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
|
||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationIncomingItemDto;
|
||||
import it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationResponseDto;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import retrofit2.Call;
|
||||
@@ -120,7 +122,10 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
|
||||
.enqueue(new Callback<>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<InstantItemSituationResponseDto>> call, Response<ServiceRESTResponse<InstantItemSituationResponseDto>> response) {
|
||||
analyzeAnswer(response, "getInstantItemSituation", onComplete, onFailed);
|
||||
analyzeAnswer(response, "getInstantItemSituation", data -> {
|
||||
|
||||
fillInstantItemSituationWithMtbAarts(data, onComplete, onFailed);
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -130,5 +135,54 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
|
||||
});
|
||||
}
|
||||
|
||||
private void fillInstantItemSituationWithMtbAarts(InstantItemSituationResponseDto data, RunnableArgs<InstantItemSituationResponseDto> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
var inputCodMarts = new ArrayList<String>();
|
||||
|
||||
if (data.getIncomingItems() != null && !data.getIncomingItems().isEmpty()) {
|
||||
inputCodMarts.addAll(Stream.of(data.getIncomingItems())
|
||||
.map(InstantItemSituationIncomingItemDto::getCodMart)
|
||||
.toList());
|
||||
}
|
||||
|
||||
if (data.getAvailableItems() != null && !data.getAvailableItems().isEmpty()) {
|
||||
inputCodMarts.addAll(Stream.of(data.getAvailableItems())
|
||||
.map(MvwSitArtUdcDetInventario::getCodMart)
|
||||
.toList());
|
||||
}
|
||||
|
||||
if (inputCodMarts.isEmpty()) {
|
||||
onComplete.run(data);
|
||||
return;
|
||||
}
|
||||
|
||||
mArticoloRESTConsumer.getByCodMarts(inputCodMarts, mtbAarts -> {
|
||||
|
||||
mArticoloRESTConsumer.fillMtbAartsWithMtbUntMis(mtbAarts, newMtbAarts -> {
|
||||
if (data.getIncomingItems() != null && !data.getIncomingItems().isEmpty()) {
|
||||
for (var item : data.getIncomingItems()) {
|
||||
var mtbAart = Stream.of(newMtbAarts).filter(x -> x.getCodMart().equalsIgnoreCase(item.getCodMart()))
|
||||
.findFirstOrElse(null);
|
||||
|
||||
if (mtbAart != null)
|
||||
item.setMtbAart(mtbAart);
|
||||
}
|
||||
}
|
||||
|
||||
if (data.getAvailableItems() != null && !data.getAvailableItems().isEmpty()) {
|
||||
for (var item : data.getAvailableItems()) {
|
||||
var mtbAart = Stream.of(newMtbAarts).filter(x -> x.getCodMart().equalsIgnoreCase(item.getCodMart()))
|
||||
.findFirstOrElse(null);
|
||||
|
||||
if (mtbAart != null)
|
||||
item.setMtbAart(mtbAart);
|
||||
}
|
||||
}
|
||||
|
||||
onComplete.run(data);
|
||||
}, onFailed);
|
||||
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -61,7 +61,10 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
|
||||
.filter(x -> !UtilityString.isNullOrEmpty(x.getPartitaMag()))
|
||||
.forEach(x -> {
|
||||
|
||||
if (!Stream.of(batchLotsToSearch).anyMatch(batchLotToSearch -> batchLotToSearch.getCodMart().equalsIgnoreCase(x.getCodMart()) && batchLotToSearch.getPartitaMag().equalsIgnoreCase(x.getPartitaMag()))) {
|
||||
if (!Stream.of(batchLotsToSearch)
|
||||
.anyMatch(batchLotToSearch ->
|
||||
batchLotToSearch.getCodMart().equalsIgnoreCase(x.getCodMart()) &&
|
||||
batchLotToSearch.getPartitaMag().equalsIgnoreCase(x.getPartitaMag()))) {
|
||||
MtbPartitaMag mtbPartitaMag = new MtbPartitaMag()
|
||||
.setCodMart(x.getCodMart())
|
||||
.setPartitaMag(x.getPartitaMag());
|
||||
|
||||
@@ -2,8 +2,6 @@ package it.integry.integrywmsnative.core.rest.consumers;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
@@ -13,8 +11,7 @@ import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.GrigliaDTO;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdiniAcquistoGrigliaDTO;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
@@ -37,47 +34,23 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
|
||||
this.magazzinoRESTConsumer = magazzinoRESTConsumer;
|
||||
}
|
||||
|
||||
public void getArticoliListino(String codAlis, RunnableArgs<GrigliaDTO> onSuccess, RunnableArgs<Exception> onFailed) {
|
||||
|
||||
public void retrieveArticoli(String codAlis, String codMdep, RunnableArgs<OrdiniAcquistoGrigliaDTO> onSuccess, RunnableArgs<Exception> onFailed) {
|
||||
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class, 300);
|
||||
ordiniARestService
|
||||
.getArticoliListino(codAlis)
|
||||
ordiniARestService.retrieveArticoli(codAlis, codMdep, null)
|
||||
.enqueue(new Callback<>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<GrigliaDTO>> call, Response<ServiceRESTResponse<GrigliaDTO>> response) {
|
||||
analyzeAnswer(response, "getArticoliListino", griglia -> {
|
||||
|
||||
public void onResponse(Call<ServiceRESTResponse<OrdiniAcquistoGrigliaDTO>> call, Response<ServiceRESTResponse<OrdiniAcquistoGrigliaDTO>> response) {
|
||||
var startTime = new Date().getTime();
|
||||
analyzeAnswer(response, "retrieveArticoliOrdine", articoliOrdineWrapper -> {
|
||||
UtilityThread.executeParallel(() -> {
|
||||
var startTime = new Date().getTime();
|
||||
|
||||
List<ArticoloDTO> listaArticoli = new ArrayList<>();
|
||||
|
||||
Stream.of(griglia.getGrigliaAcquistiChild())
|
||||
.groupBy(ArticoloDTO::getCodMart)
|
||||
.forEach(entry -> {
|
||||
|
||||
if (entry.getValue().size() == 1) {
|
||||
listaArticoli.add(entry.getValue().get(0));
|
||||
} else {
|
||||
for (ArticoloDTO articolo : entry.getValue()) {
|
||||
if (!articolo.getBarCode().endsWith(articolo.getCodMart())) {
|
||||
listaArticoli.add(articolo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
griglia.setGrigliaAcquistiChild(listaArticoli);
|
||||
|
||||
Log.d("LOADING TIME 1", "MS: " + (new Date().getTime() - startTime));
|
||||
onSuccess.run(griglia);
|
||||
onSuccess.run(articoliOrdineWrapper);
|
||||
}, false);
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<GrigliaDTO>> call, Throwable t) {
|
||||
public void onFailure(Call<ServiceRESTResponse<OrdiniAcquistoGrigliaDTO>> call, Throwable t) {
|
||||
Log.e("getArticoliListino_pv", t.toString());
|
||||
UtilityLogger.error(new Exception(t));
|
||||
onFailed.run(new Exception(t));
|
||||
@@ -85,7 +58,31 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
|
||||
});
|
||||
}
|
||||
|
||||
public void saveOrdine(Ordine ordine, List<ArticoloOrdine> articoli, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onFailed) {
|
||||
public void retrieveArticolo(String codAlis, String codMdep, String barcode, RunnableArgs<OrdiniAcquistoGrigliaDTO> onSuccess, RunnableArgs<Exception> onFailed) {
|
||||
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class, 300);
|
||||
ordiniARestService.retrieveArticoli(codAlis, codMdep, barcode)
|
||||
.enqueue(new Callback<>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<OrdiniAcquistoGrigliaDTO>> call, Response<ServiceRESTResponse<OrdiniAcquistoGrigliaDTO>> response) {
|
||||
var startTime = new Date().getTime();
|
||||
analyzeAnswer(response, "retrieveArticoliOrdine", articoliOrdineWrapper -> {
|
||||
UtilityThread.executeParallel(() -> {
|
||||
Log.d("LOADING TIME 1", "MS: " + (new Date().getTime() - startTime));
|
||||
onSuccess.run(articoliOrdineWrapper);
|
||||
}, false);
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<OrdiniAcquistoGrigliaDTO>> call, Throwable t) {
|
||||
Log.e("getArticoliListino_pv", t.toString());
|
||||
UtilityLogger.error(new Exception(t));
|
||||
onFailed.run(new Exception(t));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void saveOrdine(Ordine ordine, List<ArticoloOrdine> articoli, String codMdep, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onFailed) {
|
||||
SaveDTO saveDTO = new SaveDTO();
|
||||
OrdineDTO ordineDTO = new OrdineDTO();
|
||||
List<ArtDTO> artRows = new ArrayList<>();
|
||||
@@ -101,21 +98,36 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
|
||||
saveDTO.setGestione("O");
|
||||
saveDTO.setOrdineDTO(ordineDTO);
|
||||
|
||||
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class, 300);
|
||||
ordiniARestService.save(codMdep, saveDTO)
|
||||
.enqueue(new Callback<>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
|
||||
var startTime = new Date().getTime();
|
||||
analyzeAnswer(response, "retrieveArticoliOrdine", articoliOrdineWrapper -> {
|
||||
UtilityThread.executeParallel(() -> {
|
||||
// if (data == null) {
|
||||
// onFailed.run(new Exception("Nessun ordine generato"));
|
||||
// return;
|
||||
// }
|
||||
ordine.setTransmitted(true);
|
||||
ordine.setTransmissionDate(UtilityDate.getDateInstance());
|
||||
// ordine.setGestione(data.getGestione());
|
||||
// ordine.setDataOrdS(data.getDataOrd());
|
||||
// ordine.setCodMdep(data.getCodMdep());
|
||||
// ordine.setNumOrd(data.getNumOrd());
|
||||
onSuccess.run(ordine);
|
||||
}, false);
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
magazzinoRESTConsumer.saveOrdine(saveDTO, data -> {
|
||||
if (data == null) {
|
||||
onFailed.run(new Exception("Nessun ordine generato"));
|
||||
return;
|
||||
}
|
||||
|
||||
ordine.setTransmitted(true);
|
||||
ordine.setTransmissionDate(UtilityDate.getDateInstance());
|
||||
ordine.setGestione(data.getGestione());
|
||||
ordine.setDataOrdS(data.getDataOrd());
|
||||
ordine.setCodMdep(data.getCodMdep());
|
||||
ordine.setNumOrd(data.getNumOrd());
|
||||
onSuccess.run(ordine);
|
||||
}, onFailed);
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<Object>> call, Throwable t) {
|
||||
Log.e("saveOrdine", t.toString());
|
||||
UtilityLogger.error(new Exception(t));
|
||||
onFailed.run(new Exception(t));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
@@ -131,6 +143,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
|
||||
dto.setSystemNote(art.getSystemNote());
|
||||
dto.setQta(BigDecimal.valueOf(art.getQtaOrd()));
|
||||
dto.setQtaCnf(BigDecimal.valueOf(art.getQtaCnf()));
|
||||
dto.setCodAlis(art.getCodAlis());
|
||||
dto.setColli(BigDecimal.ZERO);
|
||||
return dto;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,18 @@
|
||||
package it.integry.integrywmsnative.core.rest.consumers;
|
||||
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.GrigliaDTO;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdiniAcquistoGrigliaDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.Body;
|
||||
import retrofit2.http.GET;
|
||||
import retrofit2.http.POST;
|
||||
import retrofit2.http.Query;
|
||||
|
||||
public interface PVOrdiniAcquistoRESTConsumerService {
|
||||
@GET("wms/ordini-acquisto/articoli")
|
||||
Call<ServiceRESTResponse<OrdiniAcquistoGrigliaDTO>> retrieveArticoli(@Query("chiaveGriglia") String codAlis, @Query("codMdep") String codMdep, @Query("barcodeArt") String barcode);
|
||||
|
||||
@POST("SM2GetElencoArticoli")
|
||||
Call<ServiceRESTResponse<GrigliaDTO>> getArticoliListino(@Query("chiaveGriglia") String codAlis);
|
||||
@POST("wms/ordini-acquisto/save")
|
||||
Call<ServiceRESTResponse<Object>> save(@Query("codMdep") String codMdep, @Body() SaveDTO saveDTO);
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ public class SitArtOrdDTO {
|
||||
private String descrizioneMsfa;
|
||||
private String untord;
|
||||
private BigDecimal qtaOmg;
|
||||
private BigDecimal qtaArrivo;
|
||||
|
||||
private final HashMap<String, Object> extraInfo = new HashMap<>();
|
||||
|
||||
@@ -232,4 +233,13 @@ public class SitArtOrdDTO {
|
||||
this.qtaOmg = qtaOmg;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaArrivo() {
|
||||
return qtaArrivo;
|
||||
}
|
||||
|
||||
public SitArtOrdDTO setQtaArrivo(BigDecimal qtaArrivo) {
|
||||
this.qtaArrivo = qtaArrivo;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package it.integry.integrywmsnative.core.rest.model.giacenza;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
|
||||
public class InstantItemSituationIncomingItemDto {
|
||||
|
||||
private BigDecimal qtaOrd;
|
||||
@@ -21,6 +23,7 @@ public class InstantItemSituationIncomingItemDto {
|
||||
private String codJcom;
|
||||
private String codMdep;
|
||||
private String untMis;
|
||||
private MtbAart mtbAart;
|
||||
|
||||
public BigDecimal getQtaOrd() {
|
||||
return qtaOrd;
|
||||
@@ -85,4 +88,13 @@ public class InstantItemSituationIncomingItemDto {
|
||||
public String getUntMis() {
|
||||
return untMis;
|
||||
}
|
||||
|
||||
public MtbAart getMtbAart() {
|
||||
return mtbAart;
|
||||
}
|
||||
|
||||
public InstantItemSituationIncomingItemDto setMtbAart(MtbAart mtbAart) {
|
||||
this.mtbAart = mtbAart;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ public class DBSettingsModel {
|
||||
private boolean flagSpedizioneUseQtaOrd;
|
||||
private boolean flagOrdinaNuoviArticoliInGriglia;
|
||||
private boolean flagOrdinaArticoliOnScan;
|
||||
private boolean flagConsentiFuoriPianoLogistico;
|
||||
private String docInterniCheckFornitore;
|
||||
private String produzioneDefaultCodAnag;
|
||||
private boolean flagPrintPackingListOnOrderClose;
|
||||
@@ -55,6 +56,9 @@ public class DBSettingsModel {
|
||||
private boolean showCodFornSpedizione = true;
|
||||
private boolean flagCanCreateInventario = true;
|
||||
private boolean flagCanAddUnknownItemsInventario = true;
|
||||
private boolean flagShouldAskToCreateOrUpdateRowInventario = false;
|
||||
private String commessaMagazzino;
|
||||
private boolean flagGeneraDocumentoSpedizione = false;
|
||||
|
||||
public boolean isFlagSpedizioneEnableFakeGiacenza() {
|
||||
return flagSpedizioneEnableFakeGiacenza;
|
||||
@@ -416,4 +420,40 @@ public class DBSettingsModel {
|
||||
this.flagCanAddUnknownItemsInventario = flagCanAddUnknownItemsInventario;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isFlagShouldAskToCreateOrUpdateRowInventario() {
|
||||
return flagShouldAskToCreateOrUpdateRowInventario;
|
||||
}
|
||||
|
||||
public DBSettingsModel setFlagShouldAskToCreateOrUpdateRowInventario(boolean flagShouldAskToCreateOrUpdateRowInventario) {
|
||||
this.flagShouldAskToCreateOrUpdateRowInventario = flagShouldAskToCreateOrUpdateRowInventario;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isFlagConsentiFuoriPianoLogistico() {
|
||||
return flagConsentiFuoriPianoLogistico;
|
||||
}
|
||||
|
||||
public DBSettingsModel setFlagConsentiFuoriPianoLogistico(boolean flagConsentiFuoriPianoLogistico) {
|
||||
this.flagConsentiFuoriPianoLogistico = flagConsentiFuoriPianoLogistico;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCommessaMagazzino() {
|
||||
return commessaMagazzino;
|
||||
}
|
||||
|
||||
public DBSettingsModel setCommessaMagazzino(String commessaMagazzino) {
|
||||
this.commessaMagazzino = commessaMagazzino;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isFlagGeneraDocumentoSpedizione() {
|
||||
return flagGeneraDocumentoSpedizione;
|
||||
}
|
||||
|
||||
public DBSettingsModel setFlagGeneraDocumentoSpedizione(boolean flagGeneraDocumentoSpedizione) {
|
||||
this.flagGeneraDocumentoSpedizione = flagGeneraDocumentoSpedizione;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import java.util.List;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.CommonConst;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.StbGestSetup;
|
||||
import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO;
|
||||
@@ -24,6 +25,7 @@ import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityFirebase;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
||||
|
||||
@Singleton
|
||||
public class SettingsManager {
|
||||
@@ -108,6 +110,7 @@ public class SettingsManager {
|
||||
};
|
||||
|
||||
RunnableArgs<Exception> tmpOnFailed = ex -> {
|
||||
UtilityLogger.error(ex);
|
||||
perfTrace.putAttribute("failed", "true");
|
||||
if (!(ex instanceof SocketTimeoutException)) onFailed.run(ex);
|
||||
else
|
||||
@@ -305,6 +308,10 @@ public class SettingsManager {
|
||||
.setGestName("PVM")
|
||||
.setSection("ORDINI_A")
|
||||
.setKeySection("ORDINA_ARTICOLI_ON_SCAN"));
|
||||
stbGestSetupList.add(new StbGestSetup()
|
||||
.setGestName("PVM")
|
||||
.setSection("ORDINI_A")
|
||||
.setKeySection("FLAG_CONSENTI_ORIDNE_DA_GRIGLIA"));
|
||||
stbGestSetupList.add(new StbGestSetup()
|
||||
.setGestName("PVM")
|
||||
.setSection("DOC_INTERNI")
|
||||
@@ -357,6 +364,18 @@ public class SettingsManager {
|
||||
.setGestName("PICKING")
|
||||
.setSection("INVENTARIO")
|
||||
.setKeySection("FLAG_CAN_ADD_UNKNOWN_ITEMS"));
|
||||
stbGestSetupList.add(new StbGestSetup()
|
||||
.setGestName("PICKING")
|
||||
.setSection("INVENTARIO")
|
||||
.setKeySection("FLAG_SHOULD_ASK_TO_CREATE_OR_UPDATE_ROW"));
|
||||
stbGestSetupList.add(new StbGestSetup()
|
||||
.setGestName("PICKING")
|
||||
.setSection("SETUP")
|
||||
.setKeySection("COMMESSA_MAGAZZINO"));
|
||||
stbGestSetupList.add(new StbGestSetup()
|
||||
.setGestName("PICKING")
|
||||
.setSection("SPEDIZIONE")
|
||||
.setKeySection("GENERA_DOC"));
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
|
||||
mGestSetupRESTConsumer.getValues(codMdep, stbGestSetupList, list -> {
|
||||
@@ -381,6 +400,7 @@ public class SettingsManager {
|
||||
dbSettingsModelIstance.setFlagAccettazioneUseQtaOrd(getValueFromList(list, "ACCETTAZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
|
||||
dbSettingsModelIstance.setFlagPickLiberoAllowEmptyDest(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_DEST", Boolean.class));
|
||||
dbSettingsModelIstance.setFlagOrdinaArticoliOnScan(getValueFromList(list, "ORDINI_A", "ORDINA_ARTICOLI_ON_SCAN", Boolean.class));
|
||||
dbSettingsModelIstance.setFlagConsentiFuoriPianoLogistico(getValueFromList(list, "ORDINI_A", "FLAG_CONSENTI_ORIDNE_DA_GRIGLIA", Boolean.class));
|
||||
dbSettingsModelIstance.setFlagPrintPackingListOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_PACKING_LIST_ON_CLOSE", Boolean.class));
|
||||
dbSettingsModelIstance.setFlagPrintEtichetteOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_ETICHETTE_ON_CLOSE", Boolean.class));
|
||||
dbSettingsModelIstance.setFlagAskInfoAggiuntiveSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_ASK_INFO_AGGIUNTIVE", Boolean.class));
|
||||
@@ -391,6 +411,9 @@ public class SettingsManager {
|
||||
dbSettingsModelIstance.setGroupShippingByCommodityGroup(getValueFromList(list, "SPEDIZIONE", "FLAG_GROUP_BY_GRP_MERC", Boolean.class, Boolean.FALSE));
|
||||
dbSettingsModelIstance.setFlagCanCreateInventario(getValueFromList(list, "INVENTARIO", "FLAG_CAN_CREATE_INVENTARIO", Boolean.class, Boolean.TRUE));
|
||||
dbSettingsModelIstance.setFlagCanAddUnknownItemsInventario(getValueFromList(list, "INVENTARIO", "FLAG_CAN_ADD_UNKNOWN_ITEMS", Boolean.class, Boolean.TRUE));
|
||||
dbSettingsModelIstance.setFlagShouldAskToCreateOrUpdateRowInventario(getValueFromList(list, "INVENTARIO", "FLAG_SHOULD_ASK_TO_CREATE_OR_UPDATE_ROW", Boolean.class, Boolean.FALSE));
|
||||
dbSettingsModelIstance.setCommessaMagazzino(getValueFromList(list, "SETUP", "COMMESSA_MAGAZZINO", String.class, CommonConst.Config.COMMESSA_MAG));
|
||||
dbSettingsModelIstance.setFlagGeneraDocumentoSpedizione(getValueFromList(list, "SPEDIZIONE", "GENERA_DOC", Boolean.class, Boolean.FALSE));
|
||||
|
||||
String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class);
|
||||
if (notePerdita != null)
|
||||
@@ -420,7 +443,7 @@ public class SettingsManager {
|
||||
.filter(x -> x.getSection().equalsIgnoreCase(section) && x.getKeySection().equalsIgnoreCase(keySectionName))
|
||||
.findFirstOrElse(null);
|
||||
|
||||
if(value != null) {
|
||||
if (value != null) {
|
||||
if (clazz == String.class) {
|
||||
return clazz.cast(value.getValue());
|
||||
} else if (clazz == Boolean.class) {
|
||||
@@ -428,6 +451,12 @@ public class SettingsManager {
|
||||
} else if (clazz == Integer.class && value.getValue() != null) {
|
||||
return clazz.cast(Integer.parseInt(value.getValue()));
|
||||
}
|
||||
} else if(defaultValue == null) {
|
||||
if (clazz == Boolean.class) {
|
||||
return clazz.cast(Boolean.FALSE);
|
||||
} else if (clazz == Integer.class) {
|
||||
return clazz.cast(0);
|
||||
}
|
||||
}
|
||||
|
||||
return defaultValue;
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package it.integry.integrywmsnative.core.utility;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
|
||||
public class UntMisUtils {
|
||||
|
||||
public static boolean shouldBeShowInColli(MtbAart mtbAart) {
|
||||
return SettingsManager.iDB().isFlagForceAllToColli() || (mtbAart == null || !mtbAart.isFlagQtaCnfFissaBoolean());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -36,6 +36,10 @@ public class UtilityBarcode {
|
||||
return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.EAN128;
|
||||
}
|
||||
|
||||
public static boolean isCode128(BarcodeScanDTO barcodeScanDTO) {
|
||||
return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.CODE128;
|
||||
}
|
||||
|
||||
public static boolean isEtichettaPosizione(BarcodeScanDTO barcodeScanDTO) {
|
||||
return isEtichettaPosizione(barcodeScanDTO, true);
|
||||
}
|
||||
|
||||
@@ -8,23 +8,23 @@ import it.integry.integrywmsnative.core.CommonConst;
|
||||
public class UtilityBigDecimal {
|
||||
|
||||
public static boolean greaterThan(BigDecimal input, BigDecimal toCompareWith) {
|
||||
if(input == null) return false;
|
||||
if(toCompareWith == null) return false;
|
||||
if (input == null) return false;
|
||||
if (toCompareWith == null) return false;
|
||||
|
||||
return input.compareTo(toCompareWith) > 0;
|
||||
}
|
||||
|
||||
public static boolean equalsTo(BigDecimal input, BigDecimal toCompareWith) {
|
||||
if(input == null && toCompareWith == null) return true;
|
||||
if(input == null) return false;
|
||||
if(toCompareWith == null) return false;
|
||||
if (input == null && toCompareWith == null) return true;
|
||||
if (input == null) return false;
|
||||
if (toCompareWith == null) return false;
|
||||
|
||||
return input.compareTo(toCompareWith) == 0;
|
||||
}
|
||||
|
||||
public static boolean lowerThan(BigDecimal input, BigDecimal toCompareWith) {
|
||||
if(input == null) return false;
|
||||
if(toCompareWith == null) return false;
|
||||
if (input == null) return false;
|
||||
if (toCompareWith == null) return false;
|
||||
|
||||
return input.compareTo(toCompareWith) < 0;
|
||||
}
|
||||
@@ -38,15 +38,15 @@ public class UtilityBigDecimal {
|
||||
}
|
||||
|
||||
public static BigDecimal getLowerBetween(BigDecimal input1, BigDecimal input2) {
|
||||
if(input1 == null) return input2;
|
||||
if(input2 == null) return input1;
|
||||
if (input1 == null) return input2;
|
||||
if (input2 == null) return input1;
|
||||
|
||||
return lowerThan(input1, input2) ? input1 : input2;
|
||||
}
|
||||
|
||||
public static BigDecimal getGreaterBetween(BigDecimal input1, BigDecimal input2) {
|
||||
if(input1 == null) return input2;
|
||||
if(input2 == null) return input1;
|
||||
if (input1 == null) return input2;
|
||||
if (input2 == null) return input1;
|
||||
|
||||
return greaterThan(input1, input2) ? input1 : input2;
|
||||
}
|
||||
@@ -57,14 +57,14 @@ public class UtilityBigDecimal {
|
||||
}
|
||||
|
||||
public static BigDecimal divide(BigDecimal input1, BigDecimal divisor, RoundingMode roundingMode) {
|
||||
if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
|
||||
if (divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
|
||||
return input1.divide(divisor, 3, roundingMode);
|
||||
}
|
||||
|
||||
|
||||
public static BigDecimal divideToInteger(BigDecimal input1, BigDecimal divisor) {
|
||||
if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
|
||||
return new BigDecimal(input1.divide(divisor,3, BigDecimal.ROUND_HALF_EVEN).intValue());
|
||||
if (divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
|
||||
return new BigDecimal(input1.divide(divisor, 3, BigDecimal.ROUND_HALF_EVEN).intValue());
|
||||
}
|
||||
|
||||
|
||||
@@ -73,8 +73,8 @@ public class UtilityBigDecimal {
|
||||
}
|
||||
|
||||
public static BigDecimal divideAndRoundToInteger(BigDecimal input1, BigDecimal divisor, RoundingMode roundingMode) {
|
||||
if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
|
||||
return new BigDecimal(input1.divide(divisor,0, roundingMode).intValue());
|
||||
if (divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
|
||||
return new BigDecimal(input1.divide(divisor, 0, roundingMode).intValue());
|
||||
}
|
||||
|
||||
public static BigDecimal multiply(BigDecimal input1, BigDecimal multiplier) {
|
||||
@@ -87,4 +87,8 @@ public class UtilityBigDecimal {
|
||||
return input.setScale(CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS, RoundingMode.HALF_EVEN);
|
||||
}
|
||||
|
||||
public static boolean isNullOrZero(BigDecimal input) {
|
||||
return input == null || equalsTo(input, BigDecimal.ZERO);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
package it.integry.integrywmsnative.core.utility;
|
||||
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
|
||||
|
||||
public class UtilityProgress {
|
||||
|
||||
public static DialogProgressView createDefaultProgressDialog(FragmentActivity mContext) {
|
||||
var progress = DialogProgressView.newInstance(null, null, true);
|
||||
progress.show(mContext.getSupportFragmentManager(), "tag");
|
||||
return progress;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -389,7 +389,7 @@ public class AccettazionePickingViewModel {
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
if (codAnags != null && codAnags.size() == 1) {
|
||||
if (codAnags.size() == 1) {
|
||||
mtbColt.setCodAnag(codAnags.get(0));
|
||||
}
|
||||
|
||||
@@ -399,7 +399,7 @@ public class AccettazionePickingViewModel {
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
if (rifOrds != null && rifOrds.size() == 1) {
|
||||
if (rifOrds.size() == 1) {
|
||||
mtbColt.setRifOrd(rifOrds.get(0));
|
||||
}
|
||||
|
||||
@@ -409,16 +409,9 @@ public class AccettazionePickingViewModel {
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
if (numDataOrds != null && numDataOrds.size() == 1) {
|
||||
if (numDataOrds.size() == 1) {
|
||||
mtbColt.setNumOrd(mOrders.get(0).getNumero());
|
||||
mtbColt.setDataOrd(mOrders.get(0).getData());
|
||||
|
||||
try {
|
||||
mtbColt.generaFiltroOrdine();
|
||||
} catch (Exception ex) {
|
||||
this.sendError(ex);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, savedMtbColt -> {
|
||||
|
||||
@@ -3,11 +3,12 @@ package it.integry.integrywmsnative.gest.contab_doc_interni;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.text.Html;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
@@ -28,7 +29,6 @@ import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.databinding.FragmentDocInterniBinding;
|
||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoResponseDTO;
|
||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoView;
|
||||
@@ -83,23 +83,29 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
|
||||
mBinding.setView(this);
|
||||
mBinding.setViewModel(mViewModel);
|
||||
|
||||
mViewModel.mtbGrup.observe(getViewLifecycleOwner(), mtbGrup -> mViewModel.fetchProducts());
|
||||
mViewModel.dtbTipi.observe(getViewLifecycleOwner(), dtbTipi -> mViewModel.fetchDocuments());
|
||||
this.initRecyclerView();
|
||||
|
||||
return mBinding.getRoot();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
if (!this.mViewModel.hasDocDetails()) {
|
||||
mViewModel.init();
|
||||
} else {
|
||||
this.mViewModel.fetchDocuments();
|
||||
this.onLoadingStarted();
|
||||
this.mViewModel.fetchDocuments(this::onLoadingEnded);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
@@ -117,27 +123,7 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
|
||||
@Override
|
||||
public void onDocDetailsChanged(DialogSelectDocInfoResponseDTO selection) {
|
||||
mViewModel.setSelectedDocDetails(selection);
|
||||
|
||||
if (selection.isFornitoreRequired()) {
|
||||
mBinding.codAnagContainer.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
mBinding.codAnagContainer.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
|
||||
// if (selection.getGruppoArt() != null) {
|
||||
// mBinding.mtbGrpContainer.setVisibility(View.VISIBLE);
|
||||
// } else {
|
||||
// mBinding.mtbGrpContainer.setVisibility(View.GONE);
|
||||
// }
|
||||
|
||||
if (selection.isDocumentRequired()) {
|
||||
mBinding.docContainer.setVisibility(View.VISIBLE);
|
||||
mBinding.document.setText(Html.fromHtml(getString(R.string.doc_testata, String.valueOf(selection.getNumDoc()), UtilityDate.formatDate(selection.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))));
|
||||
} else {
|
||||
mBinding.docContainer.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
mBinding.invalidateAll();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -158,12 +144,9 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
|
||||
.show(requireActivity().getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
public void showInfoArtDialog() {
|
||||
|
||||
}
|
||||
|
||||
private void initRecyclerView() {
|
||||
this.mViewModel.getDocsList().observe(getViewLifecycleOwner(), this::refreshList);
|
||||
|
||||
DocInterniListAdapter docInterniListAdapter = new DocInterniListAdapter(this.requireActivity(), this.mDocInterniMutableData);
|
||||
docInterniListAdapter.setEmptyView(this.mBinding.docInterniEmptyView);
|
||||
this.mBinding.docInterniMainList.setAdapter(docInterniListAdapter);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package it.integry.integrywmsnative.gest.contab_doc_interni;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@@ -37,12 +37,12 @@ public class DocInterniViewModel {
|
||||
private List<DocumentoArtDTO> availableArts;
|
||||
private final MutableLiveData<List<DocInternoWrapper>> mDocsList = new MutableLiveData<>();
|
||||
|
||||
public final MutableLiveData<TipoDocDTO> dtbTipi = new MutableLiveData<>();
|
||||
public final MutableLiveData<GruppoArticoloDTO> mtbGrup = new MutableLiveData<>();
|
||||
public final MutableLiveData<FornitoreDTO> fornitore = new MutableLiveData<>();
|
||||
public final MutableLiveData<Date> dataDoc = new MutableLiveData<>();
|
||||
public final MutableLiveData<String> numDoc = new MutableLiveData<>();
|
||||
public final MutableLiveData<String> note = new MutableLiveData<>();
|
||||
public TipoDocDTO dtbTipi;
|
||||
public GruppoArticoloDTO mtbGrup;
|
||||
public FornitoreDTO fornitore;
|
||||
public Date dataDoc;
|
||||
public String numDoc;
|
||||
public String note;
|
||||
public final BindableInteger artsSize = new BindableInteger(0);
|
||||
|
||||
@Inject
|
||||
@@ -52,8 +52,6 @@ public class DocInterniViewModel {
|
||||
this.docInterniRESTConsumer = docInterniRESTConsumer;
|
||||
this.documentRepository = documentRepository;
|
||||
this.documentRESTConsumer = documentRESTConsumer;
|
||||
|
||||
this.mDocsList.setValue(new ArrayList<>());
|
||||
}
|
||||
|
||||
|
||||
@@ -83,54 +81,62 @@ public class DocInterniViewModel {
|
||||
return this;
|
||||
}
|
||||
|
||||
public MutableLiveData<List<DocInternoWrapper>> getDocsList() {
|
||||
public LiveData<List<DocInternoWrapper>> getDocsList() {
|
||||
return mDocsList;
|
||||
}
|
||||
|
||||
public void setSelectedDocDetails(DialogSelectDocInfoResponseDTO selection) {
|
||||
this.fornitore = selection.getFornitore();
|
||||
this.dtbTipi = selection.getTipoDoc();
|
||||
|
||||
this.fornitore.postValue(selection.getFornitore());
|
||||
this.dtbTipi.postValue(selection.getTipoDoc());
|
||||
this.mtbGrup = selection.getGruppoArt();
|
||||
this.dataDoc = selection.getDataDoc();
|
||||
this.numDoc = selection.getNumDoc() != null ? selection.getNumDoc().toString() : null;
|
||||
this.note = selection.getNote();
|
||||
|
||||
this.mtbGrup.postValue(selection.getGruppoArt());
|
||||
this.dataDoc.postValue(selection.getDataDoc());
|
||||
this.numDoc.postValue(selection.getNumDoc() != null ? selection.getNumDoc().toString() : null);
|
||||
this.note.postValue(selection.getNote());
|
||||
this.sendOnLoadingStarted();
|
||||
fetchProducts(() -> {
|
||||
fetchDocuments(this::sendOnLoadingEnded);
|
||||
});
|
||||
}
|
||||
|
||||
public void fetchProducts() {
|
||||
this.productsFetched = false;
|
||||
this.sendOnLoadingStarted();
|
||||
public void fetchProducts(Runnable onComplete) {
|
||||
documentRESTConsumer.loadDocumentAvailableArts(
|
||||
this.getCodDtip(),
|
||||
this.getCodMgrp(),
|
||||
this.getCodAnagForn(),
|
||||
data -> {
|
||||
this.productsFetched = true;
|
||||
this.availableArts = data.getArts();
|
||||
this.artsSize.set(this.availableArts.size());
|
||||
|
||||
documentRESTConsumer.loadDocumentoAvailableArts(this.getCodDtip(), this.getCodMgrp(), data -> {
|
||||
this.productsFetched = true;
|
||||
this.availableArts = data.getArts();
|
||||
this.artsSize.set(this.availableArts.size());
|
||||
|
||||
if (this.docsFetched)
|
||||
this.sendOnLoadingEnded();
|
||||
|
||||
}, this::sendError);
|
||||
onComplete.run();
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
public void fetchDocuments() {
|
||||
this.docsFetched = false;
|
||||
this.sendOnLoadingStarted();
|
||||
String codAnag = null, codVdes = null;
|
||||
FornitoreDTO fornitore = this.fornitore.getValue();
|
||||
public void fetchDocuments(Runnable onComplete) {
|
||||
String codAnag = null;
|
||||
String codVdes = null;
|
||||
|
||||
FornitoreDTO fornitore = this.fornitore;
|
||||
if (fornitore != null) {
|
||||
codAnag = fornitore.getCodAnag();
|
||||
codVdes = fornitore.getCodVdes();
|
||||
}
|
||||
documentRepository.getLocalDocumentsByCodDtip(this.getCodDtip(), codAnag, codVdes, dataDoc.getValue(), numDoc.getValue(), list -> {
|
||||
documentRepository.getNextNumCollo(nextNumCollo -> {
|
||||
this.mDocsList.postValue(list);
|
||||
this.setNextNumCollo(nextNumCollo);
|
||||
this.docsFetched = true;
|
||||
if (this.productsFetched) {
|
||||
this.sendOnLoadingEnded();
|
||||
}
|
||||
}, this::sendError);
|
||||
|
||||
|
||||
var docsList = documentRepository.getDocuments(this.getCodDtip(),
|
||||
codAnag, codVdes, dataDoc, numDoc);
|
||||
|
||||
docsList.observeForever(data -> {
|
||||
this.mDocsList.postValue(data);
|
||||
});
|
||||
|
||||
documentRepository.getNextNumCollo(nextNumCollo -> {
|
||||
this.setNextNumCollo(nextNumCollo);
|
||||
this.docsFetched = true;
|
||||
|
||||
onComplete.run();
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
@@ -139,24 +145,28 @@ public class DocInterniViewModel {
|
||||
}
|
||||
|
||||
private String getCodDtip() {
|
||||
if (this.dtbTipi.getValue() == null) {
|
||||
if (this.dtbTipi == null) {
|
||||
return null;
|
||||
}
|
||||
return this.dtbTipi.getValue().getCodDtip();
|
||||
return this.dtbTipi.getCodDtip();
|
||||
}
|
||||
|
||||
public TipoDocDTO getTipoDoc() {
|
||||
if (this.dtbTipi.getValue() == null) {
|
||||
return null;
|
||||
}
|
||||
return this.dtbTipi.getValue();
|
||||
return this.dtbTipi;
|
||||
}
|
||||
|
||||
private String getCodMgrp() {
|
||||
if (this.mtbGrup.getValue() == null) {
|
||||
if (this.mtbGrup == null) {
|
||||
return null;
|
||||
}
|
||||
return this.mtbGrup.getValue().getCodMgrp();
|
||||
return this.mtbGrup.getCodMgrp();
|
||||
}
|
||||
|
||||
private String getCodAnagForn() {
|
||||
if (this.fornitore == null) {
|
||||
return null;
|
||||
}
|
||||
return this.fornitore.getCodAnag();
|
||||
}
|
||||
|
||||
public void editDocument(SqlMtbColt document) {
|
||||
@@ -165,7 +175,7 @@ public class DocInterniViewModel {
|
||||
|
||||
public void newDocument() {
|
||||
SqlMtbColt document = new SqlMtbColt();
|
||||
if (this.dtbTipi.getValue() == null) {
|
||||
if (this.dtbTipi == null) {
|
||||
this.sendError(new NoDocTypeSelectedException());
|
||||
return;
|
||||
}
|
||||
@@ -173,18 +183,18 @@ public class DocInterniViewModel {
|
||||
document.setCodMgrp(this.getCodMgrp());
|
||||
document.setDataCollo(new Date());
|
||||
document.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep());
|
||||
document.setAnnotazioni(this.note.getValue());
|
||||
document.setAnnotazioni(this.note);
|
||||
document.setSegno(-1);
|
||||
document.setSerCollo("/");
|
||||
document.setNumCollo(this.nextNumCollo);
|
||||
document.setGestione("L");
|
||||
document.setDataDoc(this.dataDoc.getValue());
|
||||
if (this.numDoc.getValue() != null) {
|
||||
document.setNumDoc(Integer.parseInt(this.numDoc.getValue()));
|
||||
document.setDataDoc(this.dataDoc);
|
||||
if (this.numDoc != null) {
|
||||
document.setNumDoc(Integer.parseInt(this.numDoc));
|
||||
}
|
||||
if (this.fornitore.getValue() != null) {
|
||||
document.setCodAnag(this.fornitore.getValue().getCodAnag());
|
||||
document.setCodVdes(this.fornitore.getValue().getCodVdes());
|
||||
if (this.fornitore != null) {
|
||||
document.setCodAnag(this.fornitore.getCodAnag());
|
||||
document.setCodVdes(this.fornitore.getCodVdes());
|
||||
}
|
||||
documentRepository.insert(document, id -> {
|
||||
document.setId(id);
|
||||
@@ -193,7 +203,7 @@ public class DocInterniViewModel {
|
||||
}
|
||||
|
||||
public boolean hasDocDetails() {
|
||||
return this.dtbTipi.getValue() != null;
|
||||
return this.dtbTipi != null;
|
||||
}
|
||||
|
||||
public interface Listener extends ILoadingListener {
|
||||
|
||||
@@ -90,17 +90,17 @@ public class DialogSelectDocInfoView extends BaseDialogFragment {
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
setCancelable(false);
|
||||
|
||||
mBindings = DialogSelectDocInfoViewBinding.inflate(LayoutInflater.from(this.mContext), null, false);
|
||||
mBindings.setLifecycleOwner(this);
|
||||
mBindings.setView(this);
|
||||
|
||||
mViewModel.setFornitori(mDocInputData.getFornitori());
|
||||
|
||||
var cancelable = false;
|
||||
|
||||
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
|
||||
.setView(mBindings.getRoot())
|
||||
.setCancelable(cancelable)
|
||||
.setCancelable(isCancelable())
|
||||
.setPositiveButton(R.string.confirm, (dialog, which) -> {
|
||||
//Volutamente vuoto
|
||||
})
|
||||
@@ -110,7 +110,7 @@ public class DialogSelectDocInfoView extends BaseDialogFragment {
|
||||
.create();
|
||||
|
||||
alertDialog.setOnShowListener(this);
|
||||
alertDialog.setCanceledOnTouchOutside(cancelable);
|
||||
alertDialog.setCanceledOnTouchOutside(isCancelable());
|
||||
alertDialog.setOnDismissListener(this);
|
||||
|
||||
|
||||
|
||||
@@ -5,123 +5,133 @@ import java.util.Date;
|
||||
|
||||
public class ArtDTO {
|
||||
|
||||
private Integer rigaOrd;
|
||||
private Integer rigaOrd;
|
||||
|
||||
private String codMart;
|
||||
private String codMart;
|
||||
|
||||
private String barcode;
|
||||
private String barcode;
|
||||
|
||||
private String descrizione;
|
||||
private String descrizione;
|
||||
|
||||
private Date dataIns;
|
||||
private Date dataIns;
|
||||
|
||||
private String untMis;
|
||||
private String untMis;
|
||||
|
||||
private BigDecimal qta;
|
||||
private BigDecimal qta;
|
||||
|
||||
private BigDecimal qtaCnf;
|
||||
private BigDecimal qtaCnf;
|
||||
|
||||
private BigDecimal colli;
|
||||
private BigDecimal colli;
|
||||
|
||||
private String partitaMag;
|
||||
private String partitaMag;
|
||||
|
||||
private Date dataScad;
|
||||
private Date dataScad;
|
||||
|
||||
private String systemNote;
|
||||
private String systemNote;
|
||||
private String codAlis;
|
||||
|
||||
public Integer getRigaOrd() {
|
||||
return rigaOrd;
|
||||
}
|
||||
public Integer getRigaOrd() {
|
||||
return rigaOrd;
|
||||
}
|
||||
|
||||
public void setRigaOrd(Integer rigaOrd) {
|
||||
this.rigaOrd = rigaOrd;
|
||||
}
|
||||
public void setRigaOrd(Integer rigaOrd) {
|
||||
this.rigaOrd = rigaOrd;
|
||||
}
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
}
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
}
|
||||
|
||||
public void setCodMart(String codMart) {
|
||||
this.codMart = codMart;
|
||||
}
|
||||
public void setCodMart(String codMart) {
|
||||
this.codMart = codMart;
|
||||
}
|
||||
|
||||
public String getBarcode() {
|
||||
return barcode;
|
||||
}
|
||||
public String getBarcode() {
|
||||
return barcode;
|
||||
}
|
||||
|
||||
public void setBarcode(String barcode) {
|
||||
this.barcode = barcode;
|
||||
}
|
||||
public void setBarcode(String barcode) {
|
||||
this.barcode = barcode;
|
||||
}
|
||||
|
||||
public String getDescrizione() {
|
||||
return descrizione;
|
||||
}
|
||||
public String getDescrizione() {
|
||||
return descrizione;
|
||||
}
|
||||
|
||||
public void setDescrizione(String descrizione) {
|
||||
this.descrizione = descrizione;
|
||||
}
|
||||
public void setDescrizione(String descrizione) {
|
||||
this.descrizione = descrizione;
|
||||
}
|
||||
|
||||
public Date getDataIns() {
|
||||
return dataIns;
|
||||
}
|
||||
public Date getDataIns() {
|
||||
return dataIns;
|
||||
}
|
||||
|
||||
public void setDataIns(Date dataIns) {
|
||||
this.dataIns = dataIns;
|
||||
}
|
||||
public void setDataIns(Date dataIns) {
|
||||
this.dataIns = dataIns;
|
||||
}
|
||||
|
||||
public String getUntMis() {
|
||||
return untMis;
|
||||
}
|
||||
public String getUntMis() {
|
||||
return untMis;
|
||||
}
|
||||
|
||||
public void setUntMis(String untMis) {
|
||||
this.untMis = untMis;
|
||||
}
|
||||
public void setUntMis(String untMis) {
|
||||
this.untMis = untMis;
|
||||
}
|
||||
|
||||
public BigDecimal getQta() {
|
||||
return qta;
|
||||
}
|
||||
public BigDecimal getQta() {
|
||||
return qta;
|
||||
}
|
||||
|
||||
public void setQta(BigDecimal qta) {
|
||||
this.qta = qta;
|
||||
}
|
||||
public void setQta(BigDecimal qta) {
|
||||
this.qta = qta;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaCnf() {
|
||||
return qtaCnf;
|
||||
}
|
||||
public BigDecimal getQtaCnf() {
|
||||
return qtaCnf;
|
||||
}
|
||||
|
||||
public void setQtaCnf(BigDecimal qtaCnf) {
|
||||
this.qtaCnf = qtaCnf;
|
||||
}
|
||||
public void setQtaCnf(BigDecimal qtaCnf) {
|
||||
this.qtaCnf = qtaCnf;
|
||||
}
|
||||
|
||||
public BigDecimal getColli() {
|
||||
return colli;
|
||||
}
|
||||
public BigDecimal getColli() {
|
||||
return colli;
|
||||
}
|
||||
|
||||
public void setColli(BigDecimal colli) {
|
||||
this.colli = colli;
|
||||
}
|
||||
public void setColli(BigDecimal colli) {
|
||||
this.colli = colli;
|
||||
}
|
||||
|
||||
public String getPartitaMag() {
|
||||
return partitaMag;
|
||||
}
|
||||
public String getPartitaMag() {
|
||||
return partitaMag;
|
||||
}
|
||||
|
||||
public void setPartitaMag(String partitaMag) {
|
||||
this.partitaMag = partitaMag;
|
||||
}
|
||||
public void setPartitaMag(String partitaMag) {
|
||||
this.partitaMag = partitaMag;
|
||||
}
|
||||
|
||||
public Date getDataScad() {
|
||||
return dataScad;
|
||||
}
|
||||
public Date getDataScad() {
|
||||
return dataScad;
|
||||
}
|
||||
|
||||
public void setDataScad(Date dataScad) {
|
||||
this.dataScad = dataScad;
|
||||
}
|
||||
public void setDataScad(Date dataScad) {
|
||||
this.dataScad = dataScad;
|
||||
}
|
||||
|
||||
public String getSystemNote() {
|
||||
return systemNote;
|
||||
}
|
||||
public String getSystemNote() {
|
||||
return systemNote;
|
||||
}
|
||||
|
||||
public void setSystemNote(String systemNote) {
|
||||
this.systemNote = systemNote;
|
||||
}
|
||||
public void setSystemNote(String systemNote) {
|
||||
this.systemNote = systemNote;
|
||||
}
|
||||
|
||||
public String getCodAlis() {
|
||||
return codAlis;
|
||||
}
|
||||
|
||||
public ArtDTO setCodAlis(String codAlis) {
|
||||
this.codAlis = codAlis;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,85 +0,0 @@
|
||||
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
|
||||
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
|
||||
public class DialogChooseRowFromListaDocRowsListModel {
|
||||
|
||||
private String codMart;
|
||||
private String descrizione;
|
||||
private String qtaOrdReadable;
|
||||
private String barcode;
|
||||
private boolean isNew;
|
||||
private SqlMtbColr originalModel;
|
||||
private BindableBoolean checked = new BindableBoolean(false);
|
||||
|
||||
public DialogChooseRowFromListaDocRowsListModel() {
|
||||
}
|
||||
|
||||
public BindableBoolean getChecked() {
|
||||
return checked;
|
||||
}
|
||||
|
||||
public DialogChooseRowFromListaDocRowsListModel setChecked(BindableBoolean checked) {
|
||||
this.checked = checked;
|
||||
return this;
|
||||
}
|
||||
|
||||
public void toggleCheck() {
|
||||
this.checked.set(!this.checked.get());
|
||||
}
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
}
|
||||
|
||||
public DialogChooseRowFromListaDocRowsListModel setCodMart(String codMart) {
|
||||
this.codMart = codMart;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizione() {
|
||||
return descrizione;
|
||||
}
|
||||
|
||||
public DialogChooseRowFromListaDocRowsListModel setDescrizione(String descrizione) {
|
||||
this.descrizione = descrizione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getQtaOrdReadable() {
|
||||
return qtaOrdReadable;
|
||||
}
|
||||
|
||||
public DialogChooseRowFromListaDocRowsListModel setQtaOrdReadable(String qtaOrdReadable) {
|
||||
this.qtaOrdReadable = qtaOrdReadable;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getBarcode() {
|
||||
return barcode;
|
||||
}
|
||||
|
||||
public DialogChooseRowFromListaDocRowsListModel setBarcode(String barcode) {
|
||||
this.barcode = barcode;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isNew() {
|
||||
return isNew;
|
||||
}
|
||||
|
||||
public DialogChooseRowFromListaDocRowsListModel setNew(boolean aNew) {
|
||||
isNew = aNew;
|
||||
return this;
|
||||
}
|
||||
|
||||
public SqlMtbColr getOriginalModel() {
|
||||
return originalModel;
|
||||
}
|
||||
|
||||
public DialogChooseRowFromListaDocRowsListModel setOriginalModel(SqlMtbColr originalModel) {
|
||||
this.originalModel = originalModel;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,6 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -41,13 +40,15 @@ import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.databinding.ActivityContabDocInterniEditBinding;
|
||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO;
|
||||
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsItemListModel;
|
||||
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsView;
|
||||
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.ui.DocumentRowsListAdapter;
|
||||
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
|
||||
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
|
||||
import it.integry.integrywmsnative.view.dialogs.available_items.DialogAvailableItemListModel;
|
||||
import it.integry.integrywmsnative.view.dialogs.available_items.DialogAvailableItemsView;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsView;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
||||
|
||||
@@ -128,7 +129,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
if (document.getCodAnag() != null) {
|
||||
this.codAnag.set(document.getCodAnag() + (document.getCodVdes() != null ? " - " + document.getCodVdes() : ""));
|
||||
} else {
|
||||
this.binding.supplierLayout.setVisibility(View.GONE);
|
||||
this.codAnag.set(null);
|
||||
}
|
||||
|
||||
this.documentHeader.set(String.format(this.getString(R.string.doc_interni_doc_header), document.getId(), document.getCodDtipProvv()));
|
||||
@@ -136,7 +137,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
if (document.getNumDoc() != null && document.getDataDoc() != null) {
|
||||
this.documentRifHeader.set(String.format(this.getString(R.string.doc_testata), document.getNumDoc().toString(), UtilityDate.formatDate(document.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
|
||||
} else {
|
||||
this.binding.docRifLayout.setVisibility(View.GONE);
|
||||
this.documentRifHeader.set(null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,7 +185,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
"Ricerca articolo",
|
||||
null,
|
||||
"Cod articolo / Barcode",
|
||||
barcodeProd -> this.viewModel.loadArticolo(barcodeProd, null), BarcodeManager::enable).show();
|
||||
barcodeProd -> this.viewModel.loadArticoloByCodMartOrBarcode(barcodeProd), BarcodeManager::enable).show();
|
||||
}
|
||||
|
||||
|
||||
@@ -230,7 +231,6 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
|
||||
@Override
|
||||
public void onEditRowRequest(SqlMtbColr row, boolean flagTracciabilita, boolean isUntMisDig) {
|
||||
this.onLoadingStarted();
|
||||
MtbAart mtbAart = new MtbAart();
|
||||
mtbAart.setBarCode(row.getCodBarre());
|
||||
mtbAart.setDiacod(row.getCodBarre());
|
||||
@@ -256,6 +256,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
.setSaveOnImeDone(true)
|
||||
.setPartitaMag(row.getPartitaMag())
|
||||
.setDataScad(row.getDataScad())
|
||||
.setCanInputZeroQuantity(true)
|
||||
.setCanOverflowOrderQuantity(false)
|
||||
.setCanLUBeClosed(false)
|
||||
.setNotesAllowed(true)
|
||||
@@ -278,7 +279,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
this.onLoadingStarted();
|
||||
this.viewModel.saveRow(row, resultDTO);
|
||||
})
|
||||
.setOnAbort(this::onLoadingEnded)
|
||||
.setOnAbort(() -> {})
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@@ -319,13 +320,22 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
|
||||
@Override
|
||||
public void onMultipleRowsFound(List<SqlMtbColr> rows, DocumentoArtDTO articolo) {
|
||||
DialogSelectDocRowsView.newInstance(rows, (row) -> {
|
||||
this.onLoadingEnded();
|
||||
if (row != null) {
|
||||
this.viewModel.dispatchRowEdit(row, articolo.isFlagTracciabilita(), articolo.isUntMisDigitale());
|
||||
}
|
||||
}
|
||||
).show(this.getSupportFragmentManager(), "dialogSelectDocRows");
|
||||
List<DialogSelectDocRowsItemListModel<Object>> dataset =
|
||||
Stream.of(rows)
|
||||
.map(x -> new DialogSelectDocRowsItemListModel<>()
|
||||
.setCodMart(x.getCodMart())
|
||||
.setBarcode(x.getCodBarre())
|
||||
.setOriginalModel(x)
|
||||
.setNew(x.getId() < 1)
|
||||
.setDescrizione(x.getDescrizione())
|
||||
.setQtaOrd(BigDecimal.valueOf(x.getQtaCol()))
|
||||
.setUntMisOrd(x.getUntMis()))
|
||||
.toList();
|
||||
|
||||
DialogSelectDocRowsView.newInstance(dataset, data -> {
|
||||
this.viewModel.dispatchRowEdit((SqlMtbColr) data.getOriginalModel(), articolo.isFlagTracciabilita(), articolo.isUntMisDigitale());
|
||||
}, () -> {})
|
||||
.show(this.getSupportFragmentManager(), "dialogSelectDocRowsNew");
|
||||
}
|
||||
|
||||
private MtbColr sqlToEntity(SqlMtbColr sqlMtbColr) {
|
||||
@@ -357,19 +367,24 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void showInfoArtDialog() {
|
||||
var listaMtbAart = Stream.of(this.viewModel.getProductsList())
|
||||
.map(x -> new MtbAart()
|
||||
.map(x -> new DialogAvailableItemListModel()
|
||||
.setCodMart(x.getCodMart())
|
||||
.setUntMis(x.getUntMis())
|
||||
.setDescrizione(x.getDescrizione())
|
||||
.setDescrizioneEstesa(x.getDescrizione())
|
||||
.setQtaCnf(x.getQtaCnf()))
|
||||
.setDescrizioneEstesa(x.getDescrizione()))
|
||||
.toList();
|
||||
|
||||
new DialogChooseArtFromListaArtsView(false, listaMtbAart, null)
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
for (var documentRow : viewModel.getDocumentRows()) {
|
||||
var codMart = documentRow.getCodMart();
|
||||
|
||||
Stream.of(listaMtbAart)
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(codMart))
|
||||
.forEach(x -> x.setAggiunto(true));
|
||||
}
|
||||
|
||||
|
||||
new DialogAvailableItemsView(listaMtbAart)
|
||||
.show(getSupportFragmentManager(), "DialogAvailableInventarioItemsView");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,13 +4,11 @@ import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@@ -21,6 +19,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
|
||||
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSource;
|
||||
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
|
||||
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
||||
import it.integry.integrywmsnative.core.exception.NoResultFromCodMartException;
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
|
||||
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
|
||||
@@ -37,17 +36,17 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQua
|
||||
|
||||
public class DocInterniEditFormViewModel {
|
||||
|
||||
@Inject
|
||||
MtbColrDataSource mtbColrRepository;
|
||||
@Inject
|
||||
MtbColtRepository mtbColtRepository;
|
||||
private final MtbColrDataSource mtbColrRepository;
|
||||
private final MtbColtRepository mtbColtRepository;
|
||||
private final DocInterniRESTConsumer docInterniRESTConsumer;
|
||||
private DocInterniEditFormViewModel.Listener listener;
|
||||
private Listener listener;
|
||||
private List<DocumentoArtDTO> productsList;
|
||||
private HashMap<String, String> flattedBarcodesCodMarts;
|
||||
private TipoDocDTO tipoDoc;
|
||||
|
||||
private boolean isCheckPartitaMag = false;
|
||||
private JSONObject checkFornitoreRules = null;
|
||||
|
||||
|
||||
public MutableLiveData<SqlMtbColt> document = new MutableLiveData<>();
|
||||
public MutableLiveData<List<SqlMtbColr>> docRows = new MutableLiveData<>();
|
||||
|
||||
@@ -129,16 +128,29 @@ public class DocInterniEditFormViewModel {
|
||||
this.listener.onDocumentHoldRequest();
|
||||
}
|
||||
|
||||
public void loadArticolo(String barcodeProd, Ean128Model ean128Model) {
|
||||
public void loadArticoloByCodMartOrBarcode(String codMart) {
|
||||
var matchedArt = Stream.of(productsList)
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(codMart) ||
|
||||
x.getBarcode().contains(codMart))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
|
||||
if (matchedArt == null) {
|
||||
this.sendError(new NoResultFromCodMartException(codMart));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
loadArticolo(matchedArt, null);
|
||||
}
|
||||
|
||||
public void loadArticoloByBarcode(String barcodeProd, Ean128Model ean128Model) {
|
||||
DocumentoArtDTO matchedArt;
|
||||
String usedBarcode = null;
|
||||
|
||||
String leftBarcode = StringUtils.leftPad(barcodeProd, 13, '0');
|
||||
|
||||
matchedArt = Stream.of(productsList)
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(barcodeProd) ||
|
||||
leftBarcode.equalsIgnoreCase(x.getCodMart()) ||
|
||||
x.getBarcode().contains(barcodeProd))
|
||||
.filter(x -> x.getBarcode().contains(barcodeProd))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
@@ -151,15 +163,17 @@ public class DocInterniEditFormViewModel {
|
||||
return;
|
||||
}
|
||||
|
||||
List<SqlMtbColr> rows = this.getRowsForArticolo(matchedArt, usedBarcode);
|
||||
loadArticolo(matchedArt, usedBarcode);
|
||||
}
|
||||
|
||||
private void loadArticolo(DocumentoArtDTO documentoArtDTO, String usedBarcode) {
|
||||
List<SqlMtbColr> rows = this.getRowsForArticolo(documentoArtDTO, usedBarcode);
|
||||
|
||||
if (rows.size() > 1) {
|
||||
this.listener.onMultipleRowsFound(rows, matchedArt);
|
||||
this.listener.onMultipleRowsFound(rows, documentoArtDTO);
|
||||
} else {
|
||||
this.dispatchRowEdit(rows.get(0), matchedArt.isFlagTracciabilita(), matchedArt.isUntMisDigitale());
|
||||
this.dispatchRowEdit(rows.get(0), documentoArtDTO.isFlagTracciabilita(), documentoArtDTO.isUntMisDigitale());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private List<SqlMtbColr> getRowsForArticolo(DocumentoArtDTO articolo, String barcode) {
|
||||
@@ -245,20 +259,32 @@ public class DocInterniEditFormViewModel {
|
||||
|
||||
private void initCheckFornitore() {
|
||||
SqlMtbColt doc = this.document.getValue();
|
||||
|
||||
if (doc == null)
|
||||
return;
|
||||
|
||||
boolean isCheckPartitaMag = false;
|
||||
if (doc != null && this.checkFornitoreRules != null) {
|
||||
String key = doc.getCodAnag();
|
||||
if (doc.getCodVdes() != null && !doc.getCodVdes().isEmpty()) {
|
||||
key += "-" + doc.getCodVdes();
|
||||
}
|
||||
try {
|
||||
if (this.checkFornitoreRules.has(key) && ((String) ((JSONObject) this.checkFornitoreRules.get(key)).get(doc.getCodDtipProvv())).equalsIgnoreCase("check-partitaMag")) {
|
||||
|
||||
try {
|
||||
if (this.checkFornitoreRules != null && this.checkFornitoreRules.has("value")) {
|
||||
isCheckPartitaMag = this.checkFornitoreRules.getBoolean("value");
|
||||
} else if (this.checkFornitoreRules != null) {
|
||||
String key = doc.getCodAnag();
|
||||
if (doc.getCodVdes() != null && !doc.getCodVdes().isEmpty()) {
|
||||
key += "-" + doc.getCodVdes();
|
||||
}
|
||||
if (this.checkFornitoreRules.has(key) &&
|
||||
((String) ((JSONObject) this.checkFornitoreRules.get(key))
|
||||
.get(doc.getCodDtipProvv()))
|
||||
.equalsIgnoreCase("check-partitaMag")) {
|
||||
isCheckPartitaMag = true;
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
|
||||
} catch (JSONException e) {
|
||||
this.sendError(e);
|
||||
}
|
||||
|
||||
|
||||
this.isCheckPartitaMag = isCheckPartitaMag;
|
||||
}
|
||||
|
||||
@@ -272,13 +298,6 @@ public class DocInterniEditFormViewModel {
|
||||
|
||||
public void setProductsList(List<DocumentoArtDTO> productsList) {
|
||||
this.productsList = productsList;
|
||||
this.flattedBarcodesCodMarts = new HashMap<>();
|
||||
|
||||
for (DocumentoArtDTO documentArt : productsList) {
|
||||
for (String barcode : documentArt.getBarcode()) {
|
||||
this.flattedBarcodesCodMarts.put(barcode, documentArt.getCodMart());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void processBarcode(BarcodeScanDTO dto) {
|
||||
@@ -291,7 +310,7 @@ public class DocInterniEditFormViewModel {
|
||||
this.executeEtichettaEanPeso(barcodeScanDTO);
|
||||
|
||||
} else {
|
||||
this.loadArticolo(barcodeScanDTO.getStringValue(), null);
|
||||
this.loadArticoloByBarcode(barcodeScanDTO.getStringValue(), null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -299,7 +318,7 @@ public class DocInterniEditFormViewModel {
|
||||
private void executeEtichettaEanPeso(BarcodeScanDTO barcodeScanDTO) {
|
||||
try {
|
||||
Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue());
|
||||
this.loadArticolo(ean13PesoModel.getPrecode(), ean13PesoModel.toEan128());
|
||||
this.loadArticoloByBarcode(ean13PesoModel.getPrecode(), ean13PesoModel.toEan128());
|
||||
} catch (Exception ex) {
|
||||
this.sendError(ex);
|
||||
}
|
||||
|
||||
@@ -10,7 +10,5 @@ public interface DialogSelectDocRowsComponent {
|
||||
DialogSelectDocRowsComponent create();
|
||||
}
|
||||
|
||||
|
||||
void inject(DialogSelectDocRowsView dialogSelectDocInfoView);
|
||||
|
||||
}
|
||||
void inject(DialogSelectDocRowsView dialogSelectDocRowsView);
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
|
||||
public class DialogSelectDocRowsItemListModel<T> {
|
||||
|
||||
private String codMart;
|
||||
private String descrizione;
|
||||
private BigDecimal qtaOrd;
|
||||
private String untMisOrd;
|
||||
private String barcode;
|
||||
private boolean isNew;
|
||||
private T originalModel;
|
||||
private BindableBoolean checked = new BindableBoolean(false);
|
||||
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
}
|
||||
|
||||
public DialogSelectDocRowsItemListModel<T> setCodMart(String codMart) {
|
||||
this.codMart = codMart;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizione() {
|
||||
return descrizione;
|
||||
}
|
||||
|
||||
public DialogSelectDocRowsItemListModel<T> setDescrizione(String descrizione) {
|
||||
this.descrizione = descrizione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaOrd() {
|
||||
return qtaOrd;
|
||||
}
|
||||
|
||||
public DialogSelectDocRowsItemListModel<T> setQtaOrd(BigDecimal qtaOrd) {
|
||||
this.qtaOrd = qtaOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getUntMisOrd() {
|
||||
return untMisOrd;
|
||||
}
|
||||
|
||||
public DialogSelectDocRowsItemListModel<T> setUntMisOrd(String untMisOrd) {
|
||||
this.untMisOrd = untMisOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getBarcode() {
|
||||
return barcode;
|
||||
}
|
||||
|
||||
public DialogSelectDocRowsItemListModel<T> setBarcode(String barcode) {
|
||||
this.barcode = barcode;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isNew() {
|
||||
return isNew;
|
||||
}
|
||||
|
||||
public DialogSelectDocRowsItemListModel<T> setNew(boolean aNew) {
|
||||
isNew = aNew;
|
||||
return this;
|
||||
}
|
||||
|
||||
public T getOriginalModel() {
|
||||
return originalModel;
|
||||
}
|
||||
|
||||
public DialogSelectDocRowsItemListModel<T> setOriginalModel(T originalModel) {
|
||||
this.originalModel = originalModel;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BindableBoolean getChecked() {
|
||||
return checked;
|
||||
}
|
||||
|
||||
public DialogSelectDocRowsItemListModel<T> setChecked(BindableBoolean checked) {
|
||||
this.checked = checked;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,14 @@
|
||||
package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
|
||||
@Module(subcomponents = DialogSelectDocRowsComponent.class)
|
||||
public class DialogSelectDocRowsModule {
|
||||
|
||||
@Provides
|
||||
DialogSelectDocRowsViewModel providesDialogSelectDocRowsNewViewModel() {
|
||||
return new DialogSelectDocRowsViewModel();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,143 +1,128 @@
|
||||
package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.ravikoradiya.liveadapter.LiveAdapter;
|
||||
import com.ravikoradiya.liveadapter.Type;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.BR;
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.databinding.DialogChooseRowFromListaDocRowsLayoutBinding;
|
||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DialogChooseRowFromListaDocRowsListModel;
|
||||
import kotlin.Unit;
|
||||
import it.integry.integrywmsnative.databinding.DialogSelectDocRowsBinding;
|
||||
import it.integry.integrywmsnative.databinding.DialogSelectDocRowsItemModelBinding;
|
||||
|
||||
/**
|
||||
* @noinspection rawtypes
|
||||
*/
|
||||
public class DialogSelectDocRowsView extends BaseDialogFragment {
|
||||
|
||||
private final RunnableArgs<SqlMtbColr> onRowSelected;
|
||||
private final List<SqlMtbColr> listArts;
|
||||
private final MutableLiveData<List<DialogChooseRowFromListaDocRowsListModel>> listModels = new MutableLiveData<>();
|
||||
private DialogChooseRowFromListaDocRowsLayoutBinding binding;
|
||||
public MutableLiveData<SqlMtbColr> selectedRow = new MutableLiveData<>();
|
||||
|
||||
public static DialogSelectDocRowsView newInstance(
|
||||
List<SqlMtbColr> listArts,
|
||||
RunnableArgs<SqlMtbColr> onDismiss
|
||||
) {
|
||||
return new DialogSelectDocRowsView(listArts, onDismiss);
|
||||
@Inject
|
||||
DialogSelectDocRowsViewModel mViewModel;
|
||||
|
||||
private DialogSelectDocRowsBinding mBindings;
|
||||
private Context mContext;
|
||||
|
||||
private final List<DialogSelectDocRowsItemListModel<Object>> listArts;
|
||||
private final RunnableArgs<DialogSelectDocRowsItemListModel> onConfirm;
|
||||
private final Runnable onAbort;
|
||||
|
||||
//Pass here all external parameters
|
||||
public static DialogSelectDocRowsView newInstance(List<DialogSelectDocRowsItemListModel<Object>> listArts,
|
||||
RunnableArgs<DialogSelectDocRowsItemListModel> onConfirm,
|
||||
Runnable onAbort) {
|
||||
return new DialogSelectDocRowsView(listArts, onConfirm, onAbort);
|
||||
}
|
||||
|
||||
|
||||
private DialogSelectDocRowsView(List<SqlMtbColr> listArts, RunnableArgs<SqlMtbColr> onDismiss) {
|
||||
private DialogSelectDocRowsView(List<DialogSelectDocRowsItemListModel<Object>> listArts,
|
||||
RunnableArgs<DialogSelectDocRowsItemListModel> onConfirm,
|
||||
Runnable onAbort) {
|
||||
super();
|
||||
this.onRowSelected = onDismiss;
|
||||
|
||||
this.listArts = listArts;
|
||||
this.onConfirm = onConfirm;
|
||||
this.onAbort = onAbort;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||
super.onDismiss(dialog);
|
||||
if (onRowSelected != null) onRowSelected.run(this.selectedRow.getValue());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@NonNull
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_choose_row_from_lista_doc_rows_layout, container, false);
|
||||
binding.setLifecycleOwner(this);
|
||||
MainApplication
|
||||
.appComponent
|
||||
.dialogSelectDocRowsComponent()
|
||||
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
||||
this.mContext = requireContext();
|
||||
|
||||
mBindings = DialogSelectDocRowsBinding.inflate(LayoutInflater.from(this.mContext), null, false);
|
||||
mBindings.setLifecycleOwner(this);
|
||||
|
||||
MainApplication.appComponent
|
||||
.dialogSelectDocRowsNewComponent()
|
||||
.create()
|
||||
.inject(this);
|
||||
binding.setView(this);
|
||||
|
||||
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
|
||||
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
initView();
|
||||
this.refreshList();
|
||||
setCancelable(false);
|
||||
|
||||
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
|
||||
.setView(mBindings.getRoot())
|
||||
.setCancelable(isCancelable())
|
||||
.setPositiveButton(R.string.confirm, (dialog, which) -> {
|
||||
final DialogSelectDocRowsItemListModel<Object> selectedItem = Stream.of(listArts)
|
||||
.filter(x -> x.getChecked().get())
|
||||
.findFirstOrElse(null);
|
||||
if (selectedItem != null)
|
||||
this.onConfirm.run(selectedItem);
|
||||
})
|
||||
.setNegativeButton(R.string.abort, (dialog, which) -> {
|
||||
if (this.onAbort != null) this.onAbort.run();
|
||||
})
|
||||
.create();
|
||||
|
||||
binding.positiveButton.setOnClickListener(view -> {
|
||||
getDialog().dismiss();
|
||||
});
|
||||
|
||||
binding.negativeButton.setOnClickListener(view -> {
|
||||
this.selectedRow.setValue(null);
|
||||
getDialog().dismiss();
|
||||
});
|
||||
|
||||
|
||||
this.onLoadingEnded();
|
||||
return binding.getRoot();
|
||||
alertDialog.setCanceledOnTouchOutside(isCancelable());
|
||||
alertDialog.setOnShowListener(this);
|
||||
return alertDialog;
|
||||
}
|
||||
|
||||
private void refreshList() {
|
||||
var list = Stream.of(this.listArts).map(row -> {
|
||||
DialogChooseRowFromListaDocRowsListModel model = new DialogChooseRowFromListaDocRowsListModel();
|
||||
model.setCodMart(row.getCodMart());
|
||||
model.setBarcode(row.getCodMart());
|
||||
model.setOriginalModel(row);
|
||||
model.setNew(row.getId() < 1);
|
||||
model.setDescrizione(row.getDescrizione());
|
||||
model.setQtaOrdReadable(row.getQtaCol() + "\n" + row.getUntMis());
|
||||
model.getChecked().addOnPropertyChangedCallback(() -> {
|
||||
this.checkRow(row, model.getChecked().get());
|
||||
});
|
||||
return model;
|
||||
}).toList();
|
||||
this.listModels.postValue(list);
|
||||
@Override
|
||||
public void onShow(DialogInterface dialogInterface) {
|
||||
super.onShow(dialogInterface);
|
||||
|
||||
this.listArts.get(0).getChecked().set(true);
|
||||
this.initRecyclerView();
|
||||
}
|
||||
|
||||
private void checkRow(SqlMtbColr row, boolean checked) {
|
||||
if (checked) {
|
||||
this.selectedRow.setValue(row);
|
||||
var models = this.listModels.getValue();
|
||||
if (models != null && !models.isEmpty()) {
|
||||
Stream.of(models).filter(model -> model.getOriginalModel().getId() != row.getId()).forEach(model -> {
|
||||
model.getChecked().set(false);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
var selectedRow = this.selectedRow.getValue();
|
||||
if (selectedRow != null && selectedRow.getId() == row.getId()) {
|
||||
this.selectedRow.setValue(null);
|
||||
}
|
||||
private void initRecyclerView() {
|
||||
var itemType = new Type<DialogSelectDocRowsItemListModel, DialogSelectDocRowsItemModelBinding>(R.layout.dialog_select_doc_rows__item_model, BR.row);
|
||||
// itemType.areItemSame((oldItem, newItem) -> Objects.equals(oldItem.getId(), newItem.getId()));
|
||||
itemType.areContentsTheSame(DialogSelectDocRowsItemListModel::equals);
|
||||
itemType.onClick(x -> {
|
||||
resetChecks();
|
||||
x.getBinding().getRow().getChecked().set(true);
|
||||
|
||||
return null;
|
||||
});
|
||||
|
||||
new LiveAdapter(listArts)
|
||||
.map(DialogSelectDocRowsItemListModel.class, itemType)
|
||||
.into(this.mBindings.itemList);
|
||||
}
|
||||
|
||||
private void resetChecks() {
|
||||
for (var item : listArts) {
|
||||
item.getChecked().set(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void initView() {
|
||||
initArrayAdapters();
|
||||
}
|
||||
|
||||
private void initArrayAdapters() {
|
||||
|
||||
new LiveAdapter(listModels, getViewLifecycleOwner(), BR.row)
|
||||
.map(DialogChooseRowFromListaDocRowsListModel.class, R.layout.dialog_choose_row_from_lista_doc_rows__item_model)
|
||||
.onNoData(noData -> {
|
||||
binding.emptyView.setVisibility(noData ? View.VISIBLE : View.GONE);
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
).into(binding.listaDocRows);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows;
|
||||
|
||||
public class DialogSelectDocRowsViewModel {
|
||||
|
||||
}
|
||||
@@ -2,6 +2,8 @@ package it.integry.integrywmsnative.gest.inventario;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -65,8 +67,7 @@ public class ElencoInventariViewModel {
|
||||
this.sendCreateInventarioRequest(inventoryId, zone);
|
||||
} else {
|
||||
|
||||
var matchedInventory = getInventarioList().getValue()
|
||||
.stream()
|
||||
var matchedInventory = Stream.of(getInventarioList().getValue())
|
||||
.filter(x -> Objects.equals(x.getIdInventario(), inventoryId) && UtilityString.equalsIgnoreCase(x.getZona(), zone) &&
|
||||
!x.isSyncronized())
|
||||
.findFirst()
|
||||
|
||||
@@ -63,11 +63,11 @@ public class DialogAskInfoInventarioView extends BaseDialogFragment {
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
var cancelable = true;
|
||||
setCancelable(true);
|
||||
|
||||
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
|
||||
.setView(mBindings.getRoot())
|
||||
.setCancelable(cancelable)
|
||||
.setCancelable(isCancelable())
|
||||
.setPositiveButton(R.string.ok, (dialog, which) -> {
|
||||
var zone = UtilityString.empty2null(this.zone.get());
|
||||
if(zone != null) zone = StringUtils.capitalize(zone);
|
||||
@@ -81,7 +81,7 @@ public class DialogAskInfoInventarioView extends BaseDialogFragment {
|
||||
})
|
||||
.create();
|
||||
|
||||
alertDialog.setCanceledOnTouchOutside(cancelable);
|
||||
alertDialog.setCanceledOnTouchOutside(isCancelable());
|
||||
alertDialog.setOnShowListener(this);
|
||||
return alertDialog;
|
||||
}
|
||||
|
||||
@@ -36,11 +36,14 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.databinding.ActivityPickingInventarioBinding;
|
||||
import it.integry.integrywmsnative.databinding.ActivityPickingInventarioListItemBinding;
|
||||
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsItemListModel;
|
||||
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsView;
|
||||
import it.integry.integrywmsnative.gest.inventario.bottom_sheet__inventario_row_actions.BottomSheetInventarioRowActionsView;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsView;
|
||||
import it.integry.integrywmsnative.view.dialogs.available_items.DialogAvailableItemListModel;
|
||||
import it.integry.integrywmsnative.view.dialogs.available_items.DialogAvailableItemsView;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
||||
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView;
|
||||
@@ -98,7 +101,8 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn
|
||||
mViewModel.init(
|
||||
DataCache.retrieveItem(getIntent().getStringExtra(KEY_INVENTARIO)),
|
||||
DataCache.retrieveItem(getIntent().getStringExtra(KEY_INVENTARIO_ARTS)),
|
||||
SettingsManager.iDB().isFlagCanAddUnknownItemsInventario());
|
||||
SettingsManager.iDB().isFlagCanAddUnknownItemsInventario(),
|
||||
SettingsManager.iDB().isFlagShouldAskToCreateOrUpdateRowInventario());
|
||||
|
||||
initToolbar();
|
||||
initBarcodeReader();
|
||||
@@ -214,6 +218,7 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn
|
||||
.setTotalQtaToBeTaken(totalQtaToBeTaken)
|
||||
.setTotalNumCnfToBeTaken(totalNumCnfToBeTaken)
|
||||
.setQtaCnfToBeTaken(qtaCnfToBeTaken)
|
||||
.setCanInputZeroQuantity(true)
|
||||
.setCanOverflowOrderQuantity(canOverflowOrderQuantity)
|
||||
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
|
||||
.setCanLUBeClosed(canLUBeClosed)
|
||||
@@ -234,12 +239,52 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemAlreadyFound(InventarioArtDTO matchedArt, List<InventarioRowRoomDTO> alreadyScannedItems) {
|
||||
final List<DialogSelectDocRowsItemListModel<Object>> dialogSelectDocRowsItemListModels = Stream.of(alreadyScannedItems)
|
||||
.map(x -> new DialogSelectDocRowsItemListModel<>()
|
||||
.setBarcode(x.getScanCodBarre())
|
||||
.setCodMart(x.getCodMart())
|
||||
.setDescrizione(x.getDescrizione())
|
||||
.setQtaOrd(x.getQta())
|
||||
.setUntMisOrd(x.getUntMis())
|
||||
.setNew(false)
|
||||
.setOriginalModel(x))
|
||||
.toList();
|
||||
|
||||
dialogSelectDocRowsItemListModels.add(new DialogSelectDocRowsItemListModel<>()
|
||||
.setCodMart(matchedArt.getCodMart())
|
||||
.setDescrizione(matchedArt.getDescrizione())
|
||||
.setQtaOrd(BigDecimal.ZERO)
|
||||
.setUntMisOrd(matchedArt.getUntMis())
|
||||
.setNew(true));
|
||||
|
||||
DialogSelectDocRowsView.newInstance(dialogSelectDocRowsItemListModels, data -> {
|
||||
if(data.isNew())
|
||||
this.mViewModel.dispatchRowInsert(null, matchedArt, null);
|
||||
else
|
||||
this.mViewModel.dispatchRowEdit(matchedArt.toMtbAart(), (InventarioRowRoomDTO) data.getOriginalModel());
|
||||
}, () -> {
|
||||
|
||||
}).show(this.getSupportFragmentManager(), "DialogSelectDocRowsView");
|
||||
}
|
||||
|
||||
public void showAvailableArts() {
|
||||
var listaMtbAart = Stream.of(this.mViewModel.getAvailableArts())
|
||||
.map(InventarioArtDTO::toMtbAart)
|
||||
.map(DialogAvailableItemListModel::fromMtbAart)
|
||||
.toList();
|
||||
|
||||
new DialogChooseArtFromListaArtsView(false, listaMtbAart, null)
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
for (var inventoryItem : mViewModel.currentInventarioRows.getValue()) {
|
||||
var codMart = inventoryItem.getCodMart();
|
||||
|
||||
Stream.of(listaMtbAart)
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(codMart))
|
||||
.forEach(x -> x.setAggiunto(true));
|
||||
}
|
||||
|
||||
|
||||
new DialogAvailableItemsView(listaMtbAart)
|
||||
.show(getSupportFragmentManager(), "DialogAvailableInventarioItemsView");
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,8 @@ import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
import androidx.lifecycle.ViewModel;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.ArrayList;
|
||||
@@ -37,6 +39,7 @@ public class PickingInventarioViewModel extends ViewModel {
|
||||
private final InventarioRowRepository inventarioRowRepository;
|
||||
|
||||
private boolean canAddUnknownItems;
|
||||
private boolean flagShouldAskToCreateOrUpdateRowInventario;
|
||||
|
||||
public MutableLiveData<InventarioRoomDTO> currentInventario = new MutableLiveData<>();
|
||||
public LiveData<List<InventarioRowRoomDTO>> currentInventarioRows = new MutableLiveData<>();
|
||||
@@ -51,8 +54,9 @@ public class PickingInventarioViewModel extends ViewModel {
|
||||
this.inventarioRowRepository = inventarioRowRepository;
|
||||
}
|
||||
|
||||
public void init(InventarioRoomDTO inventarioRoomDTO, List<InventarioArtDTO> inventarioArts, boolean canAddUnknownItems) {
|
||||
public void init(InventarioRoomDTO inventarioRoomDTO, List<InventarioArtDTO> inventarioArts, boolean canAddUnknownItems, boolean flagShouldAskToCreateOrUpdateRowInventario) {
|
||||
this.canAddUnknownItems = canAddUnknownItems;
|
||||
this.flagShouldAskToCreateOrUpdateRowInventario = flagShouldAskToCreateOrUpdateRowInventario;
|
||||
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
@@ -159,24 +163,41 @@ public class PickingInventarioViewModel extends ViewModel {
|
||||
|
||||
if (canAddUnknownItems && matchedArt == null) {
|
||||
matchedArt = new InventarioArtDTO()
|
||||
.setBarcode(barcodeList)
|
||||
.setFlagQtaCnfFissa(true)
|
||||
.setPlu(false)
|
||||
.setUntMis("PZ")
|
||||
.setQtaCnf(BigDecimal.ONE);
|
||||
.setBarcode(barcodeList)
|
||||
.setFlagQtaCnfFissa(true)
|
||||
.setPlu(false)
|
||||
.setUntMis("PZ")
|
||||
.setQtaCnf(BigDecimal.ONE);
|
||||
|
||||
}
|
||||
|
||||
if (matchedArt != null) {
|
||||
this.dispatchRowInsert(barcodeProd, matchedArt, ean128Model);
|
||||
var alreadyScannedItems = searchArtInAlreadyScannedItems(matchedArt);
|
||||
|
||||
if (alreadyScannedItems == null || alreadyScannedItems.isEmpty() || !flagShouldAskToCreateOrUpdateRowInventario)
|
||||
this.dispatchRowInsert(barcodeProd, matchedArt, ean128Model);
|
||||
|
||||
else {
|
||||
this.sendOnItemAlreadyFound(matchedArt, alreadyScannedItems);
|
||||
|
||||
}
|
||||
onComplete.run();
|
||||
} else
|
||||
this.sendError(new NoResultFromBarcodeException(barcodeProd));
|
||||
}
|
||||
|
||||
private List<InventarioRowRoomDTO> searchArtInAlreadyScannedItems(InventarioArtDTO inventarioArtDTO) {
|
||||
final List<InventarioRowRoomDTO> inventarioRows = this.currentInventarioRows.getValue();
|
||||
|
||||
if (inventarioRows == null) return null;
|
||||
|
||||
return Stream.of(inventarioRows)
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(inventarioArtDTO.getCodMart()))
|
||||
.toList();
|
||||
}
|
||||
|
||||
|
||||
private void dispatchRowInsert(String barcode, InventarioArtDTO inventarioArtDTO, Ean128Model ean128Model) {
|
||||
public void dispatchRowInsert(String barcode, InventarioArtDTO inventarioArtDTO, Ean128Model ean128Model) {
|
||||
var mtbAart = inventarioArtDTO.toMtbAart();
|
||||
mtbAart.setFlagTracciabilita("N");
|
||||
|
||||
@@ -290,7 +311,7 @@ public class PickingInventarioViewModel extends ViewModel {
|
||||
}
|
||||
}
|
||||
|
||||
private void dispatchRowEdit(MtbAart mtbAart, InventarioRowRoomDTO inventarioRowRoomDTO) {
|
||||
public void dispatchRowEdit(MtbAart mtbAart, InventarioRowRoomDTO inventarioRowRoomDTO) {
|
||||
|
||||
final PickingObjectDTO pickingObjectDTO = new PickingObjectDTO()
|
||||
.setMtbAart(mtbAart);
|
||||
@@ -393,6 +414,11 @@ public class PickingInventarioViewModel extends ViewModel {
|
||||
onComplete);
|
||||
}
|
||||
|
||||
private void sendOnItemAlreadyFound(InventarioArtDTO matchedArt, List<InventarioRowRoomDTO> alreadyScannedItems) {
|
||||
if(this.mListener != null)
|
||||
this.mListener.onItemAlreadyFound(matchedArt, alreadyScannedItems);
|
||||
}
|
||||
|
||||
public PickingInventarioViewModel setListener(Listener listener) {
|
||||
this.mListener = listener;
|
||||
return this;
|
||||
@@ -419,5 +445,7 @@ public class PickingInventarioViewModel extends ViewModel {
|
||||
RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
|
||||
|
||||
|
||||
void onItemAlreadyFound(InventarioArtDTO matchedArt, List<InventarioRowRoomDTO> alreadyScannedItems);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -5,22 +5,14 @@ import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.ArrayAdapter;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbTCol;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
import it.integry.integrywmsnative.databinding.DialogInputQuantityToReturnBinding;
|
||||
|
||||
public class InputQuantityToReturnDialog {
|
||||
|
||||
@@ -13,9 +13,11 @@ import androidx.core.content.ContextCompat;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.ravikoradiya.liveadapter.LiveAdapter;
|
||||
import com.ravikoradiya.liveadapter.Type;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@@ -29,14 +31,16 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinabileDTO;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.databinding.ActivityPvOrdineAcquistoEditBinding;
|
||||
import it.integry.integrywmsnative.databinding.FragmentPvArticoliOrdineAcquistoListSingleItemBinding;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloView;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo.DialogEditArticoloView;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList.DialogSelectArtToOrderItemListModel;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList.DialogSelectArtToOrderView;
|
||||
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
|
||||
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogAskActionView;
|
||||
@@ -53,7 +57,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
||||
@Inject
|
||||
PVOrdineAcquistoEditViewModel mViewModel;
|
||||
|
||||
public static Intent newInstance(Context context, Ordine ordine, List<ArticoloDTO> listArts) {
|
||||
public static Intent newInstance(Context context, Ordine ordine, List<ArticoloOrdinabileDTO> listArts) {
|
||||
Intent myIntent = new Intent(context, PVOrdineAcquistoEditActivity.class);
|
||||
String keyOrdine = DataCache.addItem(ordine);
|
||||
String keyListArts = DataCache.addItem(listArts);
|
||||
@@ -114,7 +118,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
||||
ordine.setOrderNewProducts(false);
|
||||
}
|
||||
});
|
||||
List<ArticoloDTO> articoliGriglia = DataCache.retrieveItem(getIntent().getStringExtra(DATA_LIST_ARTS));
|
||||
List<ArticoloOrdinabileDTO> articoliGriglia = DataCache.retrieveItem(getIntent().getStringExtra(DATA_LIST_ARTS));
|
||||
|
||||
this.mViewModel.init(ordine, articoliGriglia);
|
||||
}
|
||||
@@ -165,7 +169,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
||||
() -> {
|
||||
this.deleteArticolo(articoloOrdine);
|
||||
BarcodeManager.enable();
|
||||
}).show(getSupportFragmentManager(), "tag");
|
||||
}, BarcodeManager::enable).show(getSupportFragmentManager(), "tag");
|
||||
|
||||
}
|
||||
|
||||
@@ -194,6 +198,24 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
||||
}, null).show(this.getSupportFragmentManager(), "DialogEditArticoloView");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void confirmExceedingQtyOrder(Runnable onSuccess) {
|
||||
DialogSimpleMessageView.makeInfoDialog(getText(R.string.warning).toString(),
|
||||
Html.fromHtml(getResources().getString(R.string.confirm_orderable_qty_exceeded)),
|
||||
null,
|
||||
onSuccess, this::onLoadingEnded).show(getSupportFragmentManager(), "confirmExceedingQtyOrder");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void confirmCheckForUnlistedProduct(String barcode) {
|
||||
DialogSimpleMessageView.makeInfoDialog(getText(R.string.info).toString(),
|
||||
Html.fromHtml(getResources().getString(R.string.confirm_order_unlisted_item)),
|
||||
null,
|
||||
() -> {
|
||||
this.mViewModel.loadArticolo(barcode);
|
||||
}, this::onLoadingEnded).show(getSupportFragmentManager(), "confirmExceedingQtyOrder");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getColorFromResource(int resId) {
|
||||
return getResources().getColor(resId);
|
||||
@@ -228,4 +250,34 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
||||
return SettingsManager.iDB().getFlagOrdinaNuoviArticoliInGriglia();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void confirmExportInvalidProducts(Runnable onConfirm) {
|
||||
DialogSimpleMessageView.makeInfoDialog(getText(R.string.warning).toString(),
|
||||
Html.fromHtml(getResources().getString(R.string.confirm_export_invalid_product)),
|
||||
null,
|
||||
onConfirm
|
||||
,
|
||||
this::onLoadingEnded).show(getSupportFragmentManager(), "confirmExportInvalidProducts");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void chooseArtFromList(List<ArticoloOrdinabileDTO> listArticoli, RunnableArgs<ArticoloOrdinabileDTO> onArtChosen) {
|
||||
List<DialogSelectArtToOrderItemListModel<Object>> dataset =
|
||||
Stream.of(listArticoli)
|
||||
.map(x -> new DialogSelectArtToOrderItemListModel<>()
|
||||
.setCodMart(x.getCodMart())
|
||||
.setBarcode(x.getSelectedBarcode())
|
||||
.setOriginalModel(x)
|
||||
.setNew(mViewModel.isArtInOrder(x))
|
||||
.setDescrizione(x.getDescrizione())
|
||||
.setQtaOrd(BigDecimal.valueOf(x.getQtaOrd()))
|
||||
.setCodAlis(x.getCodAlis())
|
||||
.setUntMisOrd(x.getUntMis()))
|
||||
.toList();
|
||||
|
||||
DialogSelectArtToOrderView.newInstance(dataset,
|
||||
data -> onArtChosen.run((ArticoloOrdinabileDTO) data.getOriginalModel()),
|
||||
this::onLoadingEnded)
|
||||
.show(this.getSupportFragmentManager(), "dialogSelectDocRowsNew");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -21,13 +22,20 @@ import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineR
|
||||
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
|
||||
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
|
||||
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinabileDTO;
|
||||
import it.integry.integrywmsnative.core.exception.ArtNotFoundInGridException;
|
||||
import it.integry.integrywmsnative.core.exception.EmptyOrderException;
|
||||
import it.integry.integrywmsnative.core.exception.ExpiredProductListException;
|
||||
import it.integry.integrywmsnative.core.exception.MultipleResultFromBarcodeException;
|
||||
import it.integry.integrywmsnative.core.exception.NoArtsInGridException;
|
||||
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
|
||||
public class PVOrdineAcquistoEditViewModel {
|
||||
|
||||
@@ -52,9 +60,11 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
private Listener mListener;
|
||||
|
||||
|
||||
private List<ArticoloDTO> mArticoliGriglia = new ArrayList<>();
|
||||
private List<ArticoloOrdinabileDTO> mArticoliGriglia = new ArrayList<>();
|
||||
private final MutableLiveData<List<ArticoloOrdine>> mArticoli = new MutableLiveData<>();
|
||||
|
||||
private Calendar dataInizioModifica;
|
||||
|
||||
|
||||
public PVOrdineAcquistoEditViewModel(OrdineRepository ordineRepository,
|
||||
GrigliaRepository grigliaRepository,
|
||||
@@ -68,10 +78,18 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
this.pvOrdiniAcquistoRESTConsumer = pvOrdiniAcquistoRESTConsumer;
|
||||
}
|
||||
|
||||
public void init(Ordine ordine, List<ArticoloDTO> articoliGriglia) {
|
||||
public void init(Ordine ordine, List<ArticoloOrdinabileDTO> articoliGriglia) {
|
||||
this.mCurrentOrdine = ordine;
|
||||
mArticoliGriglia.clear();
|
||||
mArticoliGriglia.addAll(articoliGriglia);
|
||||
|
||||
Calendar today = Calendar.getInstance();
|
||||
today.set(Calendar.MILLISECOND, 0);
|
||||
today.set(Calendar.SECOND, 0);
|
||||
today.set(Calendar.MINUTE, 0);
|
||||
today.set(Calendar.HOUR_OF_DAY, 0);
|
||||
|
||||
this.dataInizioModifica = today;
|
||||
this.refreshListArticoli();
|
||||
}
|
||||
|
||||
@@ -79,10 +97,21 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
refreshListArticoli(null);
|
||||
}
|
||||
|
||||
public boolean isOrderSessionInvalid() {
|
||||
Calendar today = Calendar.getInstance();
|
||||
today.set(Calendar.MILLISECOND, 0);
|
||||
today.set(Calendar.SECOND, 0);
|
||||
today.set(Calendar.MINUTE, 0);
|
||||
today.set(Calendar.HOUR_OF_DAY, 0);
|
||||
|
||||
return today.after(this.dataInizioModifica);
|
||||
}
|
||||
|
||||
public void refreshListArticoli(Runnable onSuccess) {
|
||||
this.sendOnLoadingStarted();
|
||||
this.loadArticoli(mCurrentOrdine, articoli -> {
|
||||
articoli = Stream.of(articoli).map(this::completeDataArticoli).sorted((a, b) -> a.getDataIns().after(b.getDataIns()) ? -1 : 1).toList();
|
||||
|
||||
this.mArticoli.postValue(articoli);
|
||||
this.sendOnLoadingEnded();
|
||||
if (onSuccess != null)
|
||||
@@ -91,18 +120,24 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
}
|
||||
|
||||
private ArticoloOrdine completeDataArticoli(ArticoloOrdine art) {
|
||||
ArticoloDTO artGrid = Stream.of(mArticoliGriglia).filter(x -> art.getCodMart().equalsIgnoreCase(x.getCodMart())).findFirstOrElse(new ArticoloDTO());
|
||||
art.setGgScadenza(artGrid.getGgScadenza());
|
||||
art.setGiacenza(BigDecimal.valueOf(artGrid.getGiacenza()));
|
||||
art.setQtaProposta(BigDecimal.valueOf(artGrid.getQtaProposta()));
|
||||
art.setQtaPrevistaVendita(BigDecimal.valueOf(artGrid.getQtaPrevistaVendita()));
|
||||
art.setBgTint(getBgTint(art));
|
||||
art.setMediaSett(artGrid.getMediaSett());
|
||||
art.setQtaMinOrdinabile(artGrid.getQtaMinOrdinabile());
|
||||
art.setMerceDaRic(artGrid.getMerceDaRic());
|
||||
art.setNewNoPromo(artGrid.isNewNoPromo());
|
||||
art.setFlagQtaMultipla(artGrid.getFlagQtaMultipla());
|
||||
art.setSystemNote(artGrid.generateSystemNote());
|
||||
ArticoloOrdinabileDTO artGrid = Stream.of(mArticoliGriglia).filter(x -> art.getCodMart().equalsIgnoreCase(x.getCodMart())).findFirstOrElse(null);
|
||||
if (artGrid != null) {
|
||||
art.setGgScadenza(artGrid.getGgScadenza());
|
||||
art.setGiacenza(artGrid.getGiacenza());
|
||||
art.setDescrizione(artGrid.getDescrizione());
|
||||
art.setQtaProposta(artGrid.getQtaProposta());
|
||||
art.setQtaPrevistaVendita(artGrid.getQtaPrevistaVendita());
|
||||
art.setBgTint(getBgTint(art));
|
||||
art.setMediaSett(artGrid.getMediaSett());
|
||||
art.setQtaMinOrdinabile(artGrid.getQtaMinOrdinabile());
|
||||
art.setMerceDaRic(artGrid.getMerceDaRic());
|
||||
art.setNewNoPromo(artGrid.isNewNoPromo());
|
||||
art.setFlagQtaMultipla(artGrid.getFlagQtaMultipla());
|
||||
art.setCtMaxOrd(BigDecimal.valueOf(artGrid.getCtMaxOrd()));
|
||||
art.setSystemNote(artGrid.generateSystemNote());
|
||||
} else {
|
||||
art.setInvalid(true);
|
||||
}
|
||||
return art;
|
||||
}
|
||||
|
||||
@@ -126,15 +161,29 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
try {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
ArticoloDTO articoloDTO = getArticoloFromBarcode(barcode);
|
||||
if (articoloDTO == null) {
|
||||
throw new NoResultFromBarcodeException(barcode);
|
||||
List<ArticoloOrdinabileDTO> listArticoli = matchArticoliForBarcode(barcode);
|
||||
if (listArticoli == null || listArticoli.isEmpty()) {
|
||||
if (SettingsManager.iDB().isFlagConsentiFuoriPianoLogistico() && UtilityString.isNullOrEmpty(mCurrentOrdine.getCodAlis())) {
|
||||
this.mListener.confirmCheckForUnlistedProduct(barcode);
|
||||
return;
|
||||
} else {
|
||||
throw new NoResultFromBarcodeException(barcode);
|
||||
}
|
||||
}
|
||||
if (listArticoli.size() == 1) {
|
||||
this.addArticoloToOrdine(
|
||||
listArticoli.get(0),
|
||||
this::sendOnLoadingEnded,
|
||||
this::sendError
|
||||
);
|
||||
} else {
|
||||
this.mListener.chooseArtFromList(listArticoli, (art) -> {
|
||||
this.addArticoloToOrdine(
|
||||
art,
|
||||
this::sendOnLoadingEnded,
|
||||
this::sendError);
|
||||
});
|
||||
}
|
||||
this.addArticoloToOrdine(
|
||||
articoloDTO,
|
||||
this::sendOnLoadingEnded,
|
||||
this::sendError
|
||||
);
|
||||
} catch (Exception e) {
|
||||
this.sendError(e);
|
||||
BarcodeManager.enable();
|
||||
@@ -149,16 +198,24 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
}
|
||||
}
|
||||
|
||||
public void addArticoloToOrdine(ArticoloDTO art, Runnable onSuccess, RunnableArgs<Exception> onFail) {
|
||||
public void addArticoloToOrdine(ArticoloOrdinabileDTO art, Runnable onSuccess, RunnableArgs<Exception> onFail) {
|
||||
try {
|
||||
|
||||
mArticoliOrdineRepository.findArticoloByScanAndOrdine(mCurrentOrdine, art.codMart, foundArt -> {
|
||||
mArticoliOrdineRepository.findArticoloByScanAndOrdine(mCurrentOrdine, art.getCodMart(), foundArt -> {
|
||||
|
||||
var articolo = foundArt != null ? foundArt : art.convertToArticoloOrdine(mCurrentOrdine);
|
||||
var articolo = foundArt != null ? completeDataArticoli(foundArt) : convertToArticoloOrdine(art, mCurrentOrdine);
|
||||
Runnable saveAction = () -> {
|
||||
|
||||
if (isAutoOrderOnScan()) {
|
||||
articolo.setQtaOrd(articolo.getQtaOrd() + articolo.getQtaCnf());
|
||||
mArticoliOrdineRepository.saveArticoloToOrdine(articolo, () -> this.refreshListArticoli(onSuccess), onFail);
|
||||
};
|
||||
|
||||
if (isAutoOrderOnScan()) {
|
||||
if (!UtilityBigDecimal.isNullOrZero(articolo.getCtMaxOrd()) && UtilityBigDecimal.greaterThan(BigDecimal.valueOf(articolo.getQtaOrd() + articolo.getQtaCnf()), articolo.getCtMaxOrd().multiply(BigDecimal.valueOf(articolo.getQtaCnf())))) {
|
||||
mListener.confirmExceedingQtyOrder(saveAction);
|
||||
} else {
|
||||
saveAction.run();
|
||||
}
|
||||
} else {
|
||||
this.sendOnItemDispatched(articolo, onSuccess);
|
||||
}
|
||||
@@ -172,16 +229,48 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
}
|
||||
}
|
||||
|
||||
public ArticoloDTO getArticoloFromBarcode(String barcode) throws NoArtsInGridException {
|
||||
private ArticoloOrdine convertToArticoloOrdine(ArticoloOrdinabileDTO art, Ordine ordine) {
|
||||
ArticoloOrdine articolo = new ArticoloOrdine();
|
||||
|
||||
articolo.setIdOrdine(ordine.getOrdineId());
|
||||
|
||||
articolo.setBarCode(art.getSelectedBarcode());
|
||||
articolo.setCodMart(art.getCodMart());
|
||||
articolo.setMediaSett(art.getMediaSett());
|
||||
articolo.setFlagQtaMultipla(art.getFlagQtaMultipla());
|
||||
articolo.setQtaMinOrdinabile(art.getQtaMinOrdinabile());
|
||||
articolo.setMerceDaRic(art.getMerceDaRic());
|
||||
articolo.setQtaCnf(art.getQtaCnf());
|
||||
articolo.setUntMis(art.getUntMis());
|
||||
articolo.setDescrizione(art.getDescrizione());
|
||||
articolo.setDataIns(UtilityDate.getDateInstance());
|
||||
articolo.setGgScadenza(art.getGgScadenza());
|
||||
articolo.setGiacenza(art.getGiacenza());
|
||||
articolo.setQtaPrevistaVendita(art.getQtaPrevistaVendita());
|
||||
articolo.setQtaProposta(art.getQtaProposta());
|
||||
articolo.setNewNoPromo(art.isNewNoPromo());
|
||||
articolo.setSystemNote(art.generateSystemNote());
|
||||
articolo.setQtaOrd(art.getQtaOrd());
|
||||
articolo.setCodAlis(art.getCodAlis());
|
||||
articolo.setCtMaxOrd(BigDecimal.valueOf(art.getCtMaxOrd()));
|
||||
|
||||
return articolo;
|
||||
}
|
||||
|
||||
public List<ArticoloOrdinabileDTO> matchArticoliForBarcode(String barcode) throws NoArtsInGridException, MultipleResultFromBarcodeException, NoResultFromBarcodeException {
|
||||
if (mArticoliGriglia == null || mArticoliGriglia.isEmpty()) {
|
||||
throw new NoArtsInGridException();
|
||||
}
|
||||
List<ArticoloOrdinabileDTO> articoli = Stream.of(mArticoliGriglia).filter(articolo ->
|
||||
articolo.getCodMart().equalsIgnoreCase(barcode) ||
|
||||
articolo.getBarcode().contains(barcode) ||
|
||||
articolo.getBarcode().contains(StringUtils.leftPad(barcode, 13, "0"))
|
||||
|
||||
return Stream.of(mArticoliGriglia).filter(articolo ->
|
||||
articolo.getCodMart().equalsIgnoreCase(barcode) ||
|
||||
articolo.getBarcode().equalsIgnoreCase(barcode) ||
|
||||
articolo.getBarcode().equalsIgnoreCase(StringUtils.leftPad(barcode, 13, "0"))
|
||||
).sortBy(x -> x.getSortByBarcodeCondition(barcode)).findFirst().orElse(null);
|
||||
).map((art) -> art.setSelectedBarcode(barcode))
|
||||
// .sortBy(x -> x.getSortByBarcodeCondition(barcode))
|
||||
.toList();
|
||||
|
||||
return articoli;
|
||||
}
|
||||
|
||||
|
||||
@@ -189,14 +278,14 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
return SettingsManager.iDB().isFlagOrdinaArticoliOnScan();
|
||||
}
|
||||
|
||||
private List<ArticoloDTO> getNewArticoli() {
|
||||
private List<ArticoloOrdinabileDTO> getNewArticoli() {
|
||||
return mArticoliGriglia.stream()
|
||||
.filter(x -> x.getQtaOrd() > 0f)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public void orderNewProducts() {
|
||||
List<ArticoloDTO> newArts = getNewArticoli();
|
||||
List<ArticoloOrdinabileDTO> newArts = getNewArticoli();
|
||||
if (!newArts.isEmpty()) {
|
||||
List<ArticoloOrdine> articoliToSave = new ArrayList<>();
|
||||
|
||||
@@ -212,7 +301,7 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
.findFirst()
|
||||
.isEmpty()
|
||||
) {
|
||||
ArticoloOrdine dto = articolo.convertToArticoloOrdine(mCurrentOrdine);
|
||||
ArticoloOrdine dto = convertToArticoloOrdine(articolo, mCurrentOrdine);
|
||||
articoliToSave.add(dto);
|
||||
}
|
||||
});
|
||||
@@ -232,14 +321,34 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
|
||||
public void exportOrdine(Runnable onComplete) {
|
||||
this.sendOnLoadingStarted();
|
||||
pvOrdiniAcquistoRESTConsumer.saveOrdine(mCurrentOrdine, mArticoli.getValue(), (ordine) -> {
|
||||
if (isOrderSessionInvalid()) {
|
||||
this.sendError(new ExpiredProductListException());
|
||||
return;
|
||||
}
|
||||
if (mArticoli.getValue() == null || mArticoli.getValue().isEmpty()) {
|
||||
this.sendError(new EmptyOrderException());
|
||||
return;
|
||||
}
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
|
||||
Runnable saveOrdine = () -> {
|
||||
pvOrdiniAcquistoRESTConsumer.saveOrdine(mCurrentOrdine, mArticoli.getValue(), codMdep, (ordine) -> {
|
||||
|
||||
mOrdineRepository.updateOrder(ordine, ord -> {
|
||||
this.sendOnLoadingEnded();
|
||||
onComplete.run();
|
||||
}, this::sendError);
|
||||
|
||||
mOrdineRepository.updateOrder(ordine, ord -> {
|
||||
this.sendOnLoadingEnded();
|
||||
onComplete.run();
|
||||
}, this::sendError);
|
||||
};
|
||||
|
||||
if (Stream.of(mArticoli.getValue()).anyMatch(ArticoloOrdine::isInvalid)) {
|
||||
|
||||
this.mListener.confirmExportInvalidProducts(saveOrdine);
|
||||
return;
|
||||
}
|
||||
saveOrdine.run();
|
||||
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
private void sendOnItemDispatched(ArticoloOrdine articoloOrdine, Runnable onSuccess) {
|
||||
@@ -258,12 +367,65 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
if (this.mListener != null) mListener.onError(ex);
|
||||
}
|
||||
|
||||
public void loadArticolo(String barcode) {
|
||||
this.sendOnLoadingStarted();
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
pvOrdiniAcquistoRESTConsumer.retrieveArticolo(null, codMdep, barcode, (grigliaDTO) -> {
|
||||
|
||||
RunnableArgs<ArticoloOrdinabileDTO> addArtToOrder = (articolo) -> {
|
||||
ArticoloOrdinabileDTO existingArt = Stream.of(mArticoliGriglia).filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirstOrElse(null);
|
||||
if (existingArt != null) {
|
||||
List<String> barcodes = existingArt.getBarcode();
|
||||
barcodes.addAll(articolo.getBarcode());
|
||||
barcodes = Stream.of(barcodes).distinct().toList();
|
||||
existingArt.setBarcode(barcodes);
|
||||
} else {
|
||||
mArticoliGriglia.add(articolo);
|
||||
}
|
||||
this.processBarcode(barcode);
|
||||
};
|
||||
|
||||
if (grigliaDTO == null || grigliaDTO.getArticoli().isEmpty()) {
|
||||
this.sendError(new ArtNotFoundInGridException());
|
||||
return;
|
||||
}
|
||||
if (grigliaDTO.getArticoli().size() > 1) {
|
||||
this.mListener.chooseArtFromList(grigliaDTO.getArticoli(), addArtToOrder);
|
||||
return;
|
||||
}
|
||||
ArticoloOrdinabileDTO newArt = Stream.of(grigliaDTO.getArticoli()).findFirstOrElse(null);
|
||||
if (newArt == null) {
|
||||
this.sendError(new ArtNotFoundInGridException());
|
||||
return;
|
||||
}
|
||||
|
||||
addArtToOrder.run(newArt);
|
||||
|
||||
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
public boolean isArtInOrder(ArticoloOrdinabileDTO articolo) {
|
||||
if (mArticoli.getValue() == null || mArticoli.getValue().isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
return Stream.of(mArticoli.getValue()).noneMatch(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart()));
|
||||
}
|
||||
|
||||
public interface Listener extends ILoadingListener {
|
||||
void onItemDispatched(ArticoloOrdine articoloOrdine, Runnable onSuccess);
|
||||
|
||||
void confirmExceedingQtyOrder(Runnable onSuccess);
|
||||
|
||||
int getColorFromResource(int resId);
|
||||
|
||||
void onError(Exception ex);
|
||||
|
||||
void confirmCheckForUnlistedProduct(String barcode);
|
||||
|
||||
void confirmExportInvalidProducts(Runnable onConfirm);
|
||||
|
||||
void chooseArtFromList(List<ArticoloOrdinabileDTO> listArticoli, RunnableArgs<ArticoloOrdinabileDTO> onArtChosen);
|
||||
}
|
||||
|
||||
public PVOrdineAcquistoEditViewModel setListener(Listener listener) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog;
|
||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog;
|
||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
@@ -1,9 +1,10 @@
|
||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog;
|
||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo;
|
||||
|
||||
import android.content.DialogInterface;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.os.Bundle;
|
||||
import android.text.Html;
|
||||
import android.text.InputType;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -32,6 +33,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityObservable;
|
||||
import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
|
||||
public class DialogEditArticoloView extends BaseDialogFragment implements DialogEditArticoloViewModel.Listener {
|
||||
|
||||
@@ -185,8 +187,20 @@ public class DialogEditArticoloView extends BaseDialogFragment implements Dialog
|
||||
|
||||
|
||||
public void saveAndExit() {
|
||||
this.onLoadingStarted();
|
||||
if (!UtilityBigDecimal.isNullOrZero(this.getArticolo().getCtMaxOrd()) && UtilityBigDecimal.greaterThan(this.mViewModel.getNumCnf(), this.getArticolo().getCtMaxOrd())) {
|
||||
DialogSimpleMessageView.makeInfoDialog(getText(R.string.warning).toString(),
|
||||
Html.fromHtml(getActivity().getResources().getString(R.string.confirm_orderable_qty_exceeded)),
|
||||
null,
|
||||
this::save, () -> {
|
||||
this.mBindings.inputNumCnfText.requestFocus();
|
||||
}).show(getActivity().getSupportFragmentManager(), "confirmExceedingQtyOrder");
|
||||
} else {
|
||||
save();
|
||||
}
|
||||
}
|
||||
|
||||
private void save() {
|
||||
this.onLoadingStarted();
|
||||
this.mViewModel.save(newArticolo -> {
|
||||
this.mOnComplete.run(newArticolo);
|
||||
this.onLoadingEnded();
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog;
|
||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
@@ -23,6 +23,8 @@ public class DialogEditArticoloViewModel {
|
||||
private BigDecimal internalQtaCnf;
|
||||
private BigDecimal internalQtaTot;
|
||||
|
||||
private BigDecimal maxQtaOrd;
|
||||
|
||||
@Inject
|
||||
public DialogEditArticoloViewModel(ArticoliOrdineRepository articoliOrdineRepository) {
|
||||
this.mArticoliOrdineRepository = articoliOrdineRepository;
|
||||
@@ -86,6 +88,15 @@ public class DialogEditArticoloViewModel {
|
||||
return this.internalQtaTot;
|
||||
}
|
||||
|
||||
public BigDecimal getMaxQtaOrd() {
|
||||
return maxQtaOrd;
|
||||
}
|
||||
|
||||
public DialogEditArticoloViewModel setMaxQtaOrd(BigDecimal maxQtaOrd) {
|
||||
this.maxQtaOrd = maxQtaOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public interface Listener {
|
||||
void onDataChanged();
|
||||
@@ -109,7 +120,6 @@ public class DialogEditArticoloViewModel {
|
||||
this.mListener.onError(new InvalidOrderedQtyException());
|
||||
return;
|
||||
}
|
||||
|
||||
this.mCurrentArticolo.setQtaOrd(this.internalQtaTot.floatValue());
|
||||
|
||||
try {
|
||||
@@ -0,0 +1,14 @@
|
||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@Subcomponent
|
||||
public interface DialogSelectArtToOrderComponent {
|
||||
|
||||
@Subcomponent.Factory
|
||||
interface Factory {
|
||||
DialogSelectArtToOrderComponent create();
|
||||
}
|
||||
|
||||
void inject(DialogSelectArtToOrderView DialogSelectArtView);
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
|
||||
public class DialogSelectArtToOrderItemListModel<T> {
|
||||
|
||||
private String codMart;
|
||||
private String descrizione;
|
||||
private BigDecimal qtaOrd;
|
||||
private String untMisOrd;
|
||||
private String barcode;
|
||||
|
||||
private String codAlis;
|
||||
private boolean isNew;
|
||||
private T originalModel;
|
||||
private BindableBoolean checked = new BindableBoolean(false);
|
||||
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
}
|
||||
|
||||
public DialogSelectArtToOrderItemListModel<T> setCodMart(String codMart) {
|
||||
this.codMart = codMart;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizione() {
|
||||
return descrizione;
|
||||
}
|
||||
|
||||
public DialogSelectArtToOrderItemListModel<T> setDescrizione(String descrizione) {
|
||||
this.descrizione = descrizione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaOrd() {
|
||||
return qtaOrd;
|
||||
}
|
||||
|
||||
public DialogSelectArtToOrderItemListModel<T> setQtaOrd(BigDecimal qtaOrd) {
|
||||
this.qtaOrd = qtaOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getUntMisOrd() {
|
||||
return untMisOrd;
|
||||
}
|
||||
|
||||
public DialogSelectArtToOrderItemListModel<T> setUntMisOrd(String untMisOrd) {
|
||||
this.untMisOrd = untMisOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getBarcode() {
|
||||
return barcode;
|
||||
}
|
||||
|
||||
public DialogSelectArtToOrderItemListModel<T> setBarcode(String barcode) {
|
||||
this.barcode = barcode;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isNew() {
|
||||
return isNew;
|
||||
}
|
||||
|
||||
public DialogSelectArtToOrderItemListModel<T> setNew(boolean aNew) {
|
||||
isNew = aNew;
|
||||
return this;
|
||||
}
|
||||
|
||||
public T getOriginalModel() {
|
||||
return originalModel;
|
||||
}
|
||||
|
||||
public DialogSelectArtToOrderItemListModel<T> setOriginalModel(T originalModel) {
|
||||
this.originalModel = originalModel;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BindableBoolean getChecked() {
|
||||
return checked;
|
||||
}
|
||||
|
||||
public DialogSelectArtToOrderItemListModel<T> setChecked(BindableBoolean checked) {
|
||||
this.checked = checked;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodAlis() {
|
||||
return codAlis;
|
||||
}
|
||||
|
||||
public DialogSelectArtToOrderItemListModel<T> setCodAlis(String codAlis) {
|
||||
this.codAlis = codAlis;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
|
||||
@Module(subcomponents = DialogSelectArtToOrderComponent.class)
|
||||
public class DialogSelectArtToOrderModule {
|
||||
|
||||
@Provides
|
||||
DialogSelectArtToOrderViewModel providesDialogSelectArtNewViewModel() {
|
||||
return new DialogSelectArtToOrderViewModel();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.ravikoradiya.liveadapter.LiveAdapter;
|
||||
import com.ravikoradiya.liveadapter.Type;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.BR;
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.databinding.DialogSelectArtToOrderBinding;
|
||||
import it.integry.integrywmsnative.databinding.DialogSelectArtToOrderItemModelBinding;
|
||||
|
||||
/**
|
||||
* @noinspection rawtypes
|
||||
*/
|
||||
public class DialogSelectArtToOrderView extends BaseDialogFragment {
|
||||
|
||||
|
||||
@Inject
|
||||
DialogSelectArtToOrderViewModel mViewModel;
|
||||
|
||||
private DialogSelectArtToOrderBinding mBindings;
|
||||
private Context mContext;
|
||||
|
||||
private final List<DialogSelectArtToOrderItemListModel<Object>> listArts;
|
||||
private final RunnableArgs<DialogSelectArtToOrderItemListModel> onConfirm;
|
||||
private final Runnable onAbort;
|
||||
|
||||
//Pass here all external parameters
|
||||
public static DialogSelectArtToOrderView newInstance(List<DialogSelectArtToOrderItemListModel<Object>> listArts,
|
||||
RunnableArgs<DialogSelectArtToOrderItemListModel> onConfirm,
|
||||
Runnable onAbort) {
|
||||
return new DialogSelectArtToOrderView(listArts, onConfirm, onAbort);
|
||||
}
|
||||
|
||||
private DialogSelectArtToOrderView(List<DialogSelectArtToOrderItemListModel<Object>> listArts,
|
||||
RunnableArgs<DialogSelectArtToOrderItemListModel> onConfirm,
|
||||
Runnable onAbort) {
|
||||
super();
|
||||
|
||||
this.listArts = listArts;
|
||||
this.onConfirm = onConfirm;
|
||||
this.onAbort = onAbort;
|
||||
}
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
||||
this.mContext = requireContext();
|
||||
|
||||
mBindings = DialogSelectArtToOrderBinding.inflate(LayoutInflater.from(this.mContext), null, false);
|
||||
mBindings.setLifecycleOwner(this);
|
||||
|
||||
MainApplication.appComponent
|
||||
.dialogSelectArtToOrderNewComponent()
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
setCancelable(false);
|
||||
|
||||
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
|
||||
.setView(mBindings.getRoot())
|
||||
.setCancelable(isCancelable())
|
||||
.setPositiveButton(R.string.confirm, (dialog, which) -> {
|
||||
final DialogSelectArtToOrderItemListModel<Object> selectedItem = Stream.of(listArts)
|
||||
.filter(x -> x.getChecked().get())
|
||||
.findFirstOrElse(null);
|
||||
|
||||
if (selectedItem != null)
|
||||
this.onConfirm.run(selectedItem);
|
||||
})
|
||||
.setNegativeButton(R.string.abort, (dialog, which) -> {
|
||||
if (this.onAbort != null) this.onAbort.run();
|
||||
})
|
||||
.create();
|
||||
|
||||
alertDialog.setCanceledOnTouchOutside(isCancelable());
|
||||
alertDialog.setOnShowListener(this);
|
||||
return alertDialog;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onShow(DialogInterface dialogInterface) {
|
||||
super.onShow(dialogInterface);
|
||||
|
||||
this.listArts.get(0).getChecked().set(true);
|
||||
this.initRecyclerView();
|
||||
}
|
||||
|
||||
|
||||
private void initRecyclerView() {
|
||||
var itemType = new Type<DialogSelectArtToOrderItemListModel, DialogSelectArtToOrderItemModelBinding>(R.layout.dialog_select_art_to_order__item_model, BR.row);
|
||||
// itemType.areItemSame((oldItem, newItem) -> Objects.equals(oldItem.getId(), newItem.getId()));
|
||||
itemType.areContentsTheSame(DialogSelectArtToOrderItemListModel::equals);
|
||||
itemType.onClick(x -> {
|
||||
resetChecks();
|
||||
x.getBinding().getRow().getChecked().set(true);
|
||||
|
||||
return null;
|
||||
});
|
||||
|
||||
new LiveAdapter(listArts)
|
||||
.map(DialogSelectArtToOrderItemListModel.class, itemType)
|
||||
.into(this.mBindings.itemList);
|
||||
}
|
||||
|
||||
private void resetChecks() {
|
||||
for (var item : listArts) {
|
||||
item.getChecked().set(false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList;
|
||||
|
||||
public class DialogSelectArtToOrderViewModel {
|
||||
|
||||
}
|
||||
@@ -15,6 +15,7 @@ import androidx.databinding.DataBindingUtil;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@@ -28,13 +29,15 @@ import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineR
|
||||
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
|
||||
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
|
||||
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinabileDTO;
|
||||
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
|
||||
import it.integry.integrywmsnative.core.exception.ExpiredProductListException;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
|
||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoBinding;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity;
|
||||
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanGrigliaAcquistoView;
|
||||
@@ -50,7 +53,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
||||
private Griglia mGriglia;
|
||||
private OrdineAcquistoPvOpenListAdapter mAdapter;
|
||||
private final List<OrdineWrapper> mRenderedOrderList = new ArrayList<>();
|
||||
private final List<ArticoloDTO> mListArticoli = new ArrayList<>();
|
||||
private final List<ArticoloOrdinabileDTO> mListArticoli = new ArrayList<>();
|
||||
private boolean mRedirectToNewOrder = true;
|
||||
|
||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
@@ -104,7 +107,8 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
||||
if (griglia == null) {
|
||||
((IPoppableActivity) requireActivity()).pop();
|
||||
} else {
|
||||
setGriglia(griglia, listArticoli);
|
||||
setGriglia(griglia);
|
||||
setListaArticoli(listArticoli);
|
||||
}
|
||||
}).show(requireActivity().getSupportFragmentManager(), "tag");
|
||||
|
||||
@@ -115,17 +119,30 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
||||
titleText.setText(context.getText(R.string.pv_elenco_ordiniA_title_fragment).toString());
|
||||
}
|
||||
|
||||
private void setGriglia(Griglia griglia, List<ArticoloDTO> listArticoli) {
|
||||
private void setGriglia(Griglia griglia) {
|
||||
mGriglia = griglia;
|
||||
mBinding.fabNewOrder.setVisibility(View.VISIBLE);
|
||||
if (UtilityString.isNullOrEmpty(griglia.getCodAlis())) {
|
||||
mBinding.infoGriglia.setVisibility(View.GONE);
|
||||
} else {
|
||||
mBinding.codAlis.setText(griglia.getCodAlis());
|
||||
mBinding.descrLis.setText(griglia.getDescrLisa());
|
||||
}
|
||||
mBinding.descrDepo.setText(griglia.getDescrDepo());
|
||||
fetchOrders();
|
||||
}
|
||||
|
||||
private void setListaArticoli(List<ArticoloOrdinabileDTO> listArticoli) {
|
||||
mListArticoli.clear();
|
||||
mListArticoli.addAll(listArticoli);
|
||||
mBinding.fabNewOrder.setVisibility(View.VISIBLE);
|
||||
mBinding.codAlis.setText(griglia.getCodAlis());
|
||||
mBinding.descrLis.setText(griglia.getDescrLisa());
|
||||
mBinding.descrDepo.setText(griglia.getDescrDepo());
|
||||
mBinding.countArtLis.setText(String.valueOf(listArticoli.size()));
|
||||
Calendar today = Calendar.getInstance();
|
||||
today.set(Calendar.MILLISECOND, 0);
|
||||
today.set(Calendar.SECOND, 0);
|
||||
today.set(Calendar.MINUTE, 0);
|
||||
today.set(Calendar.HOUR_OF_DAY, 0);
|
||||
|
||||
fetchOrders();
|
||||
this.mPvOrdiniAcquistoGrigliaViewModel.setDataCaricamentoListino(today);
|
||||
mBinding.countArtLis.setText(String.valueOf(listArticoli.size()));
|
||||
}
|
||||
|
||||
private void fetchOrders() {
|
||||
@@ -164,6 +181,10 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
||||
}
|
||||
|
||||
private void editOrdine(Ordine ordine) {
|
||||
if (this.mPvOrdiniAcquistoGrigliaViewModel.isProductListSessionInvalid()) {
|
||||
this.onError(new ExpiredProductListException());
|
||||
return;
|
||||
}
|
||||
requireActivity().startActivity(PVOrdineAcquistoEditActivity.newInstance(requireActivity(), ordine, mListArticoli));
|
||||
}
|
||||
|
||||
@@ -190,7 +211,6 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
||||
});
|
||||
}, this::onError);
|
||||
}), () -> {
|
||||
|
||||
}).show(requireActivity().getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@@ -200,6 +220,10 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
||||
}
|
||||
|
||||
public void createNewOrder() {
|
||||
if (this.mPvOrdiniAcquistoGrigliaViewModel.isProductListSessionInvalid()) {
|
||||
this.onError(new ExpiredProductListException());
|
||||
return;
|
||||
}
|
||||
this.onLoadingStarted();
|
||||
|
||||
mPvOrdiniAcquistoGrigliaViewModel.createNewOrder(mGriglia, order -> {
|
||||
@@ -210,7 +234,6 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
||||
|
||||
@Override
|
||||
public void setScrollToolbar(ElevatedToolbar toolbar) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package it.integry.integrywmsnative.gest.pv_ordini_acquisto;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
|
||||
@@ -18,6 +20,8 @@ public class PVOrdiniAcquistoGrigliaViewModel {
|
||||
private final OrdineRepository ordineRepository;
|
||||
private final GrigliaRepository grigliaRepository;
|
||||
|
||||
private Calendar dataCaricamentoListino;
|
||||
|
||||
@Inject
|
||||
public PVOrdiniAcquistoGrigliaViewModel(PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer,
|
||||
ArticoloGrigliaRepository articoloGrigliaRepository,
|
||||
@@ -45,4 +49,23 @@ public class PVOrdiniAcquistoGrigliaViewModel {
|
||||
ordineRepository.delete(ordine, onSuccess, onFail);
|
||||
}
|
||||
|
||||
public Calendar getDataCaricamentoListino() {
|
||||
return dataCaricamentoListino;
|
||||
}
|
||||
|
||||
public PVOrdiniAcquistoGrigliaViewModel setDataCaricamentoListino(Calendar dataCaricamentoListino) {
|
||||
this.dataCaricamentoListino = dataCaricamentoListino;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public boolean isProductListSessionInvalid() {
|
||||
Calendar today = Calendar.getInstance();
|
||||
today.set(Calendar.MILLISECOND, 0);
|
||||
today.set(Calendar.SECOND, 0);
|
||||
today.set(Calendar.MINUTE, 0);
|
||||
today.set(Calendar.HOUR_OF_DAY, 0);
|
||||
|
||||
return today.after(this.dataCaricamentoListino);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,12 +21,15 @@ import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinabileDTO;
|
||||
import it.integry.integrywmsnative.core.exception.GridNotFoundException;
|
||||
import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.databinding.DialogScanCodiceGrigliaBinding;
|
||||
|
||||
public class DialogScanGrigliaAcquistoView extends BaseDialogFragment {
|
||||
@@ -34,20 +37,20 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment {
|
||||
private DialogScanCodiceGrigliaBinding mBinding;
|
||||
private int mBarcodeScannerIstanceID;
|
||||
|
||||
private final RunnableArgss<Griglia, List<ArticoloDTO>> mOnDialogDismiss;
|
||||
private final RunnableArgss<Griglia, List<ArticoloOrdinabileDTO>> mOnDialogDismiss;
|
||||
|
||||
@Inject
|
||||
PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer;
|
||||
|
||||
private Griglia mGriglia;
|
||||
private List<ArticoloDTO> mListArticoli;
|
||||
private List<ArticoloOrdinabileDTO> mListArticoli;
|
||||
|
||||
|
||||
public static DialogScanGrigliaAcquistoView newInstance(RunnableArgss<Griglia, List<ArticoloDTO>> onDialogDismiss) {
|
||||
public static DialogScanGrigliaAcquistoView newInstance(RunnableArgss<Griglia, List<ArticoloOrdinabileDTO>> onDialogDismiss) {
|
||||
return new DialogScanGrigliaAcquistoView(onDialogDismiss);
|
||||
}
|
||||
|
||||
private DialogScanGrigliaAcquistoView(RunnableArgss<Griglia, List<ArticoloDTO>> onDialogDismiss) {
|
||||
private DialogScanGrigliaAcquistoView(RunnableArgss<Griglia, List<ArticoloOrdinabileDTO>> onDialogDismiss) {
|
||||
super();
|
||||
mOnDialogDismiss = onDialogDismiss;
|
||||
}
|
||||
@@ -76,6 +79,17 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment {
|
||||
return alertDialog;
|
||||
}
|
||||
|
||||
public void ignore() {
|
||||
BarcodeManager.disable();
|
||||
|
||||
RunnableArgs<Exception> mOnError = exception -> {
|
||||
this.onError(exception);
|
||||
BarcodeManager.enable();
|
||||
};
|
||||
|
||||
retrieveArticoli(null, mOnError);
|
||||
}
|
||||
|
||||
private void initBarcode() {
|
||||
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessful(onScanSuccessfull)
|
||||
@@ -100,15 +114,20 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment {
|
||||
BarcodeManager.enable();
|
||||
};
|
||||
|
||||
fetchArticoli(data.getStringValue(), mOnError);
|
||||
retrieveArticoli(data.getStringValue(), mOnError);
|
||||
};
|
||||
|
||||
public void fetchArticoli(String codAlis, RunnableArgs<Exception> onFailed) {
|
||||
public void retrieveArticoli(String codAlis, RunnableArgs<Exception> onFailed) {
|
||||
this.onLoadingStarted();
|
||||
pvOrdiniAcquistoRESTConsumer.getArticoliListino(codAlis, dto -> {
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
pvOrdiniAcquistoRESTConsumer.retrieveArticoli(codAlis, codMdep, dto -> {
|
||||
this.onLoadingEnded();
|
||||
if (dto.getGrigliaAcquistiChild().size() <= 0) {
|
||||
onFailed.run(new GridNotFoundException(codAlis));
|
||||
if (dto.getArticoli().size() == 0) {
|
||||
if (UtilityString.isNullOrEmpty(codAlis)) {
|
||||
onFailed.run(new NoArtsFoundException());
|
||||
} else {
|
||||
onFailed.run(new GridNotFoundException(codAlis));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -116,7 +135,7 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment {
|
||||
mGriglia.setCodAlis(codAlis);
|
||||
mGriglia.setDescrLisa(dto.getDescrLisa());
|
||||
mGriglia.setDescrDepo(dto.getDescrDepo());
|
||||
mListArticoli = dto.getGrigliaAcquistiChild();
|
||||
mListArticoli = dto.getArticoli();
|
||||
this.dismiss();
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
@@ -217,7 +217,8 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
|
||||
mViewModel.init(
|
||||
SettingsManager.i().getUser().getFullname(),
|
||||
SettingsManager.i().getUserSession().getDepo().getCodMdep(),
|
||||
mCurrentGestione);
|
||||
mCurrentGestione,
|
||||
SettingsManager.iDB().isFlagGeneraDocumentoSpedizione());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -57,6 +57,7 @@ public class RettificaGiacenzeViewModel {
|
||||
private String mCurrentUser;
|
||||
private String mCurrentCodMdep;
|
||||
private boolean mIsCreatedLU;
|
||||
private boolean generaDocIfVendita;
|
||||
|
||||
private boolean mAnyEditDone = false;
|
||||
|
||||
@@ -74,10 +75,11 @@ public class RettificaGiacenzeViewModel {
|
||||
}
|
||||
|
||||
|
||||
public void init(String currentUser, String currentCodMdep, GestioneEnum defaultGestione) {
|
||||
public void init(String currentUser, String currentCodMdep, GestioneEnum defaultGestione, boolean generaDocIfVendita) {
|
||||
this.mCurrentUser = currentUser;
|
||||
this.mCurrentCodMdep = currentCodMdep;
|
||||
this.mDefaultGestione = defaultGestione;
|
||||
this.generaDocIfVendita = generaDocIfVendita;
|
||||
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
@@ -352,7 +354,6 @@ public class RettificaGiacenzeViewModel {
|
||||
|
||||
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
// if (!mIsCreatedLU && mCurrentMtbColt.isDocumentPresent()) {
|
||||
mtbColr
|
||||
.setQtaCol(BigDecimal.ZERO)
|
||||
.setNumCnf(BigDecimal.ZERO)
|
||||
@@ -382,39 +383,6 @@ public class RettificaGiacenzeViewModel {
|
||||
|
||||
if (shouldCloseLU) closeLU(true, null);
|
||||
}, this::sendError);
|
||||
// } else {
|
||||
// mtbColr
|
||||
// .setQtaCol(qtaTot)
|
||||
// .setQtaCnf(qtaCnf)
|
||||
// .setNumCnf(numCnf);
|
||||
//
|
||||
// MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
|
||||
// cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
//
|
||||
// cloneMtbColt.setMtbColr(new ObservableArrayList<>());
|
||||
//
|
||||
// cloneMtbColt.getMtbColr().add(mtbColr);
|
||||
//
|
||||
// mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> {
|
||||
// mtbColr
|
||||
// .setDataCollo(value.getDataColloS())
|
||||
// .setNumCollo(value.getNumCollo())
|
||||
// .setGestione(value.getGestione())
|
||||
// .setSerCollo(value.getSerCollo())
|
||||
// .setRiga(value.getMtbColr().get(0).getRiga())
|
||||
// .setUntMis(pickingObjectDTO.getMtbAart().getUntMis())
|
||||
// .setMtbAart(pickingObjectDTO.getMtbAart());
|
||||
//
|
||||
// mCurrentMtbColt.getMtbColr().add(mtbColr);
|
||||
//
|
||||
// this.mAnyEditDone = true;
|
||||
//
|
||||
// this.sendOnRowSaved();
|
||||
// this.sendOnLoadingEnded();
|
||||
//
|
||||
// if (shouldCloseLU) closeLU(true, null);
|
||||
// }, this::sendError);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
@@ -482,7 +450,7 @@ public class RettificaGiacenzeViewModel {
|
||||
}
|
||||
|
||||
private void createDoc(MtbColt mtbColt, Runnable onComplete) {
|
||||
if (!(mtbColt.getGestioneEnum() == GestioneEnum.VENDITA && mtbColt.getSegno() == -1)) {
|
||||
if (!(mtbColt.getGestioneEnum() == GestioneEnum.VENDITA && mtbColt.getSegno() == -1) || !generaDocIfVendita) {
|
||||
onComplete.run();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -46,6 +46,7 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UntMisUtils;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
@@ -175,7 +176,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
|
||||
setSupportActionBar(mBindings.toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
|
||||
mFlagShowCodForn = SettingsManager.iDB().isShowCodFornSpedizione();
|
||||
mDivideByGrpMerc = SettingsManager.iDB().isGroupShippingByCommodityGroup();
|
||||
|
||||
@@ -337,12 +338,11 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
qtaColWithdrawRows.addAndGet(row.getQtaCol());
|
||||
});
|
||||
|
||||
spedizioneListModel.setBadge2(x.getSitArtOrdDTO().getCodJcom());
|
||||
|
||||
if (!anyLUPresent) {
|
||||
spedizioneListModel.setGroupTitle(!mEnableFakeGiacenza ? getString(R.string.picking_not_available) : "");
|
||||
spedizioneListModel.setBadge2(getCommessa(x.getSitArtOrdDTO().getCodJcom()));
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
if (UntMisUtils.shouldBeShowInColli(x.getMtbAart())) {
|
||||
spedizioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||
spedizioneListModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue());
|
||||
@@ -378,15 +378,19 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
cloneModel.setGroupTitle(String.format("%s: %s", getString(R.string.position_text), UtilityString.isNullOrEmpty(mtbColtToPick.getPosizione()) ? "N.A." : mtbColtToPick.getPosizione()));
|
||||
|
||||
MtbColr mtbColrToDispatch = mtbColtToPick.getMtbColr() != null && mtbColtToPick.getMtbColr().size() > 0 ? mtbColtToPick.getMtbColr().get(0) : null;
|
||||
if (mtbColrToDispatch != null && !UtilityString.isNullOrEmpty(mtbColrToDispatch.getPartitaMag())) {
|
||||
cloneModel.setSubDescrizione1(String.format(getString(R.string.batch_lot_text), mtbColrToDispatch.getPartitaMag()));
|
||||
cloneModel.setBadge2(mtbColrToDispatch.getCodJcom());
|
||||
if (mtbColrToDispatch != null) {
|
||||
if(!UtilityString.isNullOrEmpty(mtbColrToDispatch.getPartitaMag()))
|
||||
cloneModel.setSubDescrizione1(String.format(getString(R.string.batch_lot_text), mtbColrToDispatch.getPartitaMag()));
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(x.getSitArtOrdDTO().getCodJcom())) {
|
||||
cloneModel.setBadge2(getCommessa(mtbColrToDispatch.getCodJcom()));
|
||||
}
|
||||
}
|
||||
cloneModel.setSourceMtbColr(mtbColrToDispatch);
|
||||
|
||||
cloneModel.setSubDescrizione2(String.format(getString(R.string.lu_number_data_text), mtbColtToPick.getNumCollo(), UtilityDate.formatDate(mtbColtToPick.getDataColloD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
|
||||
if (UntMisUtils.shouldBeShowInColli(x.getMtbAart())) {
|
||||
cloneModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
|
||||
BigDecimal numCnfOrdToSubstract = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getNumCnf(), numCnfOrdCounter);
|
||||
@@ -514,9 +518,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
spedizioneListModel.setGroupTitle(groupTitle);
|
||||
|
||||
if (!anyLUPresent) {
|
||||
spedizioneListModel.setBadge2(x.getSitArtOrdDTO().getCodJcom());
|
||||
spedizioneListModel.setBadge2(getCommessa(x.getSitArtOrdDTO().getCodJcom()));
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
if (UntMisUtils.shouldBeShowInColli(x.getMtbAart())) {
|
||||
spedizioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||
spedizioneListModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue());
|
||||
@@ -547,9 +551,11 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
|
||||
|
||||
MtbColr mtbColrToDispatch = mtbColtToPick.getMtbColr() != null && mtbColtToPick.getMtbColr().size() > 0 ? mtbColtToPick.getMtbColr().get(0) : null;
|
||||
if (mtbColrToDispatch != null && !UtilityString.isNullOrEmpty(mtbColrToDispatch.getPartitaMag())) {
|
||||
cloneModel.setSubDescrizione1(String.format(getString(R.string.batch_lot_text), mtbColrToDispatch.getPartitaMag()));
|
||||
cloneModel.setBadge2(mtbColrToDispatch.getCodJcom());
|
||||
if (mtbColrToDispatch != null) {
|
||||
if (!UtilityString.isNullOrEmpty(mtbColrToDispatch.getPartitaMag()))
|
||||
cloneModel.setSubDescrizione1(String.format(getString(R.string.batch_lot_text), mtbColrToDispatch.getPartitaMag()));
|
||||
|
||||
cloneModel.setBadge2(getCommessa(mtbColrToDispatch.getCodJcom()));
|
||||
}
|
||||
cloneModel.setSourceMtbColr(mtbColrToDispatch);
|
||||
|
||||
@@ -632,6 +638,19 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
return sortedList;
|
||||
}
|
||||
|
||||
private String getCommessa(String codJcom) {
|
||||
var commessaMagazzino = SettingsManager.iDB().getCommessaMagazzino();
|
||||
|
||||
if(UtilityString.isNullOrEmpty(commessaMagazzino)) {
|
||||
return UtilityString.isNull(codJcom, "Magazzino").toUpperCase();
|
||||
} else {
|
||||
if(commessaMagazzino.equalsIgnoreCase(codJcom) || codJcom == null)
|
||||
return "Magazzino".toUpperCase();
|
||||
else
|
||||
return codJcom.toUpperCase();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isThereAnyItemToPick(List<PickingObjectDTO> dataList) {
|
||||
return Stream.of(dataList)
|
||||
.anyMatch(x -> !x.isHidden());
|
||||
|
||||
@@ -599,7 +599,7 @@ public class SpedizioneViewModel {
|
||||
|
||||
final List<MagazzinoAutomaticoPickOrderRequestDTO> orders = Stream.of(this.mTestateOrdini)
|
||||
.map(x -> new MagazzinoAutomaticoPickOrderRequestDTO(UtilityDate.toLocalDate(x.getDataOrdD()), x.getGestione(), x.getNumOrd())
|
||||
.setDataCons(UtilityDate.toLocalDate(x.getDataConsD())))
|
||||
.setDataCons(x.getDataConsD() != null ? UtilityDate.toLocalDate(x.getDataConsD()) : null))
|
||||
.toList();
|
||||
|
||||
final List<MagazzinoAutomaticoPickItemRequestDTO> magazzinoAutomaticoPickItemRequestDTOList = new ArrayList<>();
|
||||
@@ -652,7 +652,12 @@ public class SpedizioneViewModel {
|
||||
if (mEnableGiacenza) {
|
||||
|
||||
Stream.of(pickingList).forEach(pickingObjectDTO -> {
|
||||
if (Stream.of(pickingObjectDTO.getMtbColts()).anyMatch(x -> Objects.equals(x.getNumCollo(), scannedUL.getNumCollo()) && x.getDataColloS().equals(scannedUL.getDataColloS()) && x.getSerCollo().equalsIgnoreCase(scannedUL.getSerCollo()) && (scannedUL.getGestioneEnum() == GestioneEnum.ACQUISTO || scannedUL.getGestioneEnum() == GestioneEnum.LAVORAZIONE))) {
|
||||
if (Stream.of(pickingObjectDTO.getMtbColts())
|
||||
.anyMatch(x ->
|
||||
Objects.equals(x.getNumCollo(), scannedUL.getNumCollo()) &&
|
||||
x.getDataColloS().equals(scannedUL.getDataColloS()) &&
|
||||
x.getSerCollo().equalsIgnoreCase(scannedUL.getSerCollo()) &&
|
||||
(scannedUL.getGestioneEnum() == GestioneEnum.ACQUISTO || scannedUL.getGestioneEnum() == GestioneEnum.LAVORAZIONE))) {
|
||||
|
||||
matchPickingObject.add(pickingObjectDTO);
|
||||
}
|
||||
@@ -679,7 +684,13 @@ public class SpedizioneViewModel {
|
||||
ObservableArrayList<MtbColr> cloneMtbColrs = (ObservableArrayList<MtbColr>) cloneMtbColt.getMtbColr().clone();
|
||||
|
||||
|
||||
Stream.of(cloneMtbColt.getMtbColr()).filter(x -> !(UtilityString.equalsIgnoreCase(x.getCodMart(), matchedObject.getSitArtOrdDTO().getCodMart()) && UtilityString.equalsIgnoreCase(x.getCodTagl(), matchedObject.getSitArtOrdDTO().getCodTagl()) && UtilityString.equalsIgnoreCase(x.getCodCol(), matchedObject.getSitArtOrdDTO().getCodCol()) && (!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), matchedObject.getSitArtOrdDTO().getPartitaMag()) || UtilityString.isNullOrEmpty(matchedObject.getSitArtOrdDTO().getPartitaMag())))).forEach(cloneMtbColrs::remove);
|
||||
Stream.of(cloneMtbColt.getMtbColr())
|
||||
.filter(x -> !(UtilityString.equalsIgnoreCase(x.getCodMart(), matchedObject.getSitArtOrdDTO().getCodMart()) &&
|
||||
UtilityString.equalsIgnoreCase(x.getCodTagl(), matchedObject.getSitArtOrdDTO().getCodTagl()) &&
|
||||
UtilityString.equalsIgnoreCase(x.getCodCol(), matchedObject.getSitArtOrdDTO().getCodCol()) &&
|
||||
(!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), matchedObject.getSitArtOrdDTO().getPartitaMag()) ||
|
||||
UtilityString.isNullOrEmpty(matchedObject.getSitArtOrdDTO().getPartitaMag()))))
|
||||
.forEach(cloneMtbColrs::remove);
|
||||
|
||||
cloneMtbColt.setMtbColr(cloneMtbColrs);
|
||||
|
||||
@@ -1210,8 +1221,9 @@ public class SpedizioneViewModel {
|
||||
.setOrders(orders);
|
||||
|
||||
this.mColliScaricoRESTConsumer.createUDS(createUDSRequestDTO, createdUDS -> {
|
||||
this.mCurrentMtbColt = createdUDS;
|
||||
mMtbColtSessionID = this.mColliDataRecoverService.startNewSession(createdUDS, mTestateOrdini);
|
||||
|
||||
this.mCurrentMtbColt = createdUDS;
|
||||
this.mIsNewLU = true;
|
||||
|
||||
if (onComplete != null) onComplete.run();
|
||||
@@ -1342,53 +1354,6 @@ public class SpedizioneViewModel {
|
||||
this.sendOnRowSaved();
|
||||
this.sendOnLoadingEnded();
|
||||
}, this::sendError);
|
||||
|
||||
|
||||
// MtbColt mtbColt = new MtbColt()
|
||||
// .setNumCollo(mtbColrToUpdate.getNumCollo())
|
||||
// .setDataCollo(mtbColrToUpdate.getDataColloS())
|
||||
// .setSerCollo(mtbColrToUpdate.getSerCollo())
|
||||
// .setGestione(mtbColrToUpdate.getGestione())
|
||||
// .setMtbColr(new ObservableArrayList<>());
|
||||
// mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
//
|
||||
// final MtbColr mtbColr = (MtbColr) mtbColrToUpdate.clone();
|
||||
// mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT);
|
||||
// mtbColr.setRiga(null)
|
||||
// .setPesoLordoKg(null)
|
||||
// .setPesoNettoKg(null)
|
||||
// .setNumCnf(numCnf.subtract(mtbColrToUpdate.getNumCnf()))
|
||||
// .setQtaCnf(qtaCnf)
|
||||
// .setQtaCol(qtaTot.subtract(mtbColrToUpdate.getQtaCol()))
|
||||
// .setPartitaMag(partitaMag)
|
||||
// .setDataScadPartita(dataScad);
|
||||
//
|
||||
// mtbColt.getMtbColr().add(mtbColr);
|
||||
//
|
||||
// this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
|
||||
//
|
||||
// mtbColr
|
||||
// .setNumCnf(numCnf)
|
||||
// .setQtaCnf(qtaCnf)
|
||||
// .setQtaCol(qtaTot);
|
||||
//
|
||||
// Optional<PickingObjectDTO> pickingObjectDTO = Stream.of(this.mPickingList.getValue())
|
||||
// .filter(x -> Stream.of(x.getWithdrawMtbColrs())
|
||||
// .anyMatch(y -> y == mtbColrToUpdate)).findSingle();
|
||||
//
|
||||
// if (pickingObjectDTO.isPresent()) {
|
||||
// pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToUpdate);
|
||||
// pickingObjectDTO.get().getWithdrawMtbColrs().add(mtbColr);
|
||||
// }
|
||||
//
|
||||
// this.mCurrentMtbColt.getMtbColr().remove(mtbColrToUpdate);
|
||||
// this.mCurrentMtbColt.getMtbColr().add(mtbColr);
|
||||
//
|
||||
// this.resetMatchedRows();
|
||||
// this.sendOnRowSaved();
|
||||
// this.sendOnLoadingEnded();
|
||||
//
|
||||
// }, this::sendError);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -62,15 +62,15 @@ public class DialogInfoSituazioneArticoloView extends BaseDialogRowInfoView {
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
var cancelable = true;
|
||||
setCancelable(true);
|
||||
|
||||
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
|
||||
.setView(mBindings.getRoot())
|
||||
.setNeutralButton(R.string.action_close, null)
|
||||
.setCancelable(cancelable)
|
||||
.setCancelable(isCancelable())
|
||||
.create();
|
||||
|
||||
alertDialog.setCanceledOnTouchOutside(cancelable);
|
||||
alertDialog.setCanceledOnTouchOutside(isCancelable());
|
||||
alertDialog.setOnShowListener(this);
|
||||
return alertDialog;
|
||||
}
|
||||
@@ -119,7 +119,7 @@ public class DialogInfoSituazioneArticoloView extends BaseDialogRowInfoView {
|
||||
availableItems = new ArrayList<>();
|
||||
|
||||
availableItems = Stream.of(availableItems)
|
||||
.filter(x -> UtilityDate.isAfterToday(x.getDataScad()))
|
||||
.filter(x -> x.getDataScad() == null || UtilityDate.isAfterToday(x.getDataScad()))
|
||||
.toList();
|
||||
|
||||
if(availableItems.isEmpty())
|
||||
@@ -141,7 +141,7 @@ public class DialogInfoSituazioneArticoloView extends BaseDialogRowInfoView {
|
||||
|
||||
var itemListCommessaNotMatchMatch = Stream.of(itemList)
|
||||
.filter(dialogInfoSituazioneArticoloAvailableListItem -> !dialogInfoSituazioneArticoloAvailableListItem.isCommessaMatch())
|
||||
.sortBy(x -> x.getDataScad())
|
||||
.sortBy(x -> x.getDataScad() == null ? UtilityDate.getNow() : x.getDataScad())
|
||||
.toList();
|
||||
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.CommonConst;
|
||||
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
||||
import it.integry.integrywmsnative.core.expansion.OnSingleClickListener;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
|
||||
@@ -150,8 +151,18 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<Spedizio
|
||||
holder.mBinding.freeQty.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(pickingObjectDTO.getQtaEvasa()));
|
||||
holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(pickingObjectDTO.getQtaTot()));
|
||||
int cifreDec = CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS;
|
||||
if (pickingObjectDTO.getOriginalModel().getMtbAart() != null &&
|
||||
pickingObjectDTO.getOriginalModel().getMtbAart().getMtbUntMis() != null &&
|
||||
!pickingObjectDTO.getOriginalModel().getMtbAart().getMtbUntMis().isEmpty()) {
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(pickingObjectDTO.getQtaEvasa(), cifreDec));
|
||||
holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(pickingObjectDTO.getQtaTot(), cifreDec));
|
||||
|
||||
holder.mBinding.untMis.setText(pickingObjectDTO.getUntMis());
|
||||
holder.mBinding.untMis.setVisibility(UtilityString.isNullOrEmpty(pickingObjectDTO.getUntMis()) ? View.GONE : View.VISIBLE);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package it.integry.integrywmsnative.view.dialogs;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
|
||||
@@ -19,14 +20,19 @@ public class DialogAskActionView extends BaseDialogFragment {
|
||||
|
||||
private final Runnable mOnEditSelected;
|
||||
private final Runnable mOnDeleteSelected;
|
||||
private boolean runOnDismissAction = true;
|
||||
private final Runnable mOnDismiss;
|
||||
|
||||
|
||||
|
||||
public static DialogAskActionView newInstance(String title, String subtitle, Runnable onEdit, Runnable onDelete) {
|
||||
return new DialogAskActionView(title, subtitle, onEdit, onDelete);
|
||||
public static DialogAskActionView newInstance(String title, String subtitle, Runnable onEdit, Runnable onDelete, Runnable onDismiss) {
|
||||
return new DialogAskActionView(title, subtitle, onEdit, onDelete, onDismiss);
|
||||
}
|
||||
|
||||
private DialogAskActionView(String title, String subTitle, Runnable onEditSelected, Runnable onDeleteSelected) {
|
||||
public static DialogAskActionView newInstance(String title, String subtitle, Runnable onEdit, Runnable onDelete) {
|
||||
return newInstance(title, subtitle, onEdit, onDelete, null);
|
||||
}
|
||||
|
||||
private DialogAskActionView(String title, String subTitle, Runnable onEditSelected, Runnable onDeleteSelected, Runnable onDismiss) {
|
||||
super();
|
||||
|
||||
mTitle = title;
|
||||
@@ -34,6 +40,7 @@ public class DialogAskActionView extends BaseDialogFragment {
|
||||
|
||||
mOnEditSelected = onEditSelected;
|
||||
mOnDeleteSelected = onDeleteSelected;
|
||||
mOnDismiss = onDismiss;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@@ -53,14 +60,23 @@ public class DialogAskActionView extends BaseDialogFragment {
|
||||
}
|
||||
|
||||
public void onEdit() {
|
||||
runOnDismissAction = false;
|
||||
dismiss();
|
||||
mOnEditSelected.run();
|
||||
}
|
||||
|
||||
public void onDelete() {
|
||||
runOnDismissAction = false;
|
||||
dismiss();
|
||||
mOnDeleteSelected.run();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||
if (runOnDismissAction && mOnDismiss != null) {
|
||||
mOnDismiss.run();
|
||||
}
|
||||
super.onDismiss(dialog);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -56,6 +56,8 @@ public class DialogProgressView extends DialogFragment {
|
||||
.setCancelable(false)
|
||||
.create();
|
||||
alertDialog.setCanceledOnTouchOutside(false);
|
||||
|
||||
setCancelable(false);
|
||||
return alertDialog;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.available_items;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
|
||||
public class DialogAvailableItemListModel {
|
||||
|
||||
private String codMart;
|
||||
private String descrizioneEstesa;
|
||||
|
||||
private boolean aggiunto;
|
||||
|
||||
public boolean isAggiunto() {
|
||||
return aggiunto;
|
||||
}
|
||||
|
||||
public DialogAvailableItemListModel setAggiunto(boolean aggiunto) {
|
||||
this.aggiunto = aggiunto;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
}
|
||||
|
||||
public DialogAvailableItemListModel setCodMart(String codMart) {
|
||||
this.codMart = codMart;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizioneEstesa() {
|
||||
return descrizioneEstesa;
|
||||
}
|
||||
|
||||
public DialogAvailableItemListModel setDescrizioneEstesa(String descrizioneEstesa) {
|
||||
this.descrizioneEstesa = descrizioneEstesa;
|
||||
return this;
|
||||
}
|
||||
|
||||
public static DialogAvailableItemListModel fromMtbAart(MtbAart mtbAart) {
|
||||
return new DialogAvailableItemListModel()
|
||||
.setCodMart(mtbAart.getCodMart())
|
||||
.setDescrizioneEstesa(mtbAart.getDescrizioneEstesa());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.available_items;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.ravikoradiya.liveadapter.LiveAdapter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.BR;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding;
|
||||
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
|
||||
|
||||
public class DialogAvailableItemsView extends BaseDialogFragment {
|
||||
|
||||
private final List<DialogAvailableItemListModel> mListaArts;
|
||||
|
||||
|
||||
public DialogAvailableItemsView(List<DialogAvailableItemListModel> listaArts) {
|
||||
super();
|
||||
this.mListaArts = listaArts;
|
||||
}
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
||||
var binding = DialogChooseArtFromListaArtBinding.inflate(LayoutInflater.from(requireContext()));
|
||||
|
||||
binding.titleText.setText(R.string.articoli_disponibili);
|
||||
|
||||
initRecyclerView(binding, mListaArts);
|
||||
|
||||
var alertDialog = new MaterialAlertDialogBuilder(requireContext())
|
||||
.setView(binding.getRoot())
|
||||
.setCancelable(false)
|
||||
.create();
|
||||
|
||||
alertDialog.setCanceledOnTouchOutside(false);
|
||||
alertDialog.setOnShowListener(this);
|
||||
return alertDialog;
|
||||
}
|
||||
|
||||
private void initRecyclerView(DialogChooseArtFromListaArtBinding binding, List<DialogAvailableItemListModel> dataset) {
|
||||
binding.itemsList.setHasFixedSize(true);
|
||||
|
||||
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(requireContext(), SimpleDividerItemDecoration.VERTICAL);
|
||||
itemDecorator.setDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.divider));
|
||||
binding.itemsList.addItemDecoration(itemDecorator);
|
||||
|
||||
|
||||
new LiveAdapter(dataset, BR.item)
|
||||
.map(DialogAvailableItemListModel.class, R.layout.dialog_available_intventario_items__item_model)
|
||||
.into(binding.itemsList);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -31,7 +31,7 @@ public class DialogChooseArtFromListaArtsAdapter extends RecyclerView.Adapter<Di
|
||||
}
|
||||
|
||||
public void bind(MtbAart mtbAart) {
|
||||
mViewDataBinding.setMtbAart(mtbAart);
|
||||
mViewDataBinding.setItem(mtbAart);
|
||||
mViewDataBinding.executePendingBindings();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,13 +59,13 @@ public class DialogChooseArtFromListaArtsView extends BaseDialogFragment {
|
||||
}
|
||||
|
||||
private void initRecyclerView(DialogChooseArtFromListaArtBinding binding, List<MtbAart> dataset) {
|
||||
binding.dialogChooseArtFromListaArtMainList.setNestedScrollingEnabled(false);
|
||||
binding.dialogChooseArtFromListaArtMainList.setHasFixedSize(true);
|
||||
binding.dialogChooseArtFromListaArtMainList.setLayoutManager(new LinearLayoutManager(requireContext()));
|
||||
binding.itemsList.setNestedScrollingEnabled(false);
|
||||
binding.itemsList.setHasFixedSize(true);
|
||||
binding.itemsList.setLayoutManager(new LinearLayoutManager(requireContext()));
|
||||
|
||||
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(requireContext(), SimpleDividerItemDecoration.VERTICAL);
|
||||
itemDecorator.setDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.divider));
|
||||
binding.dialogChooseArtFromListaArtMainList.addItemDecoration(itemDecorator);
|
||||
binding.itemsList.addItemDecoration(itemDecorator);
|
||||
|
||||
IRecyclerItemClicked<MtbAart> onItemClickListener = (item, position) -> {
|
||||
if (mOnItemChoosed != null) {
|
||||
@@ -77,7 +77,7 @@ public class DialogChooseArtFromListaArtsView extends BaseDialogFragment {
|
||||
|
||||
DialogChooseArtFromListaArtsAdapter mCurrentAdapter = new DialogChooseArtFromListaArtsAdapter(
|
||||
requireContext(), dataset, this.mEnableSelection ? onItemClickListener : null);
|
||||
binding.dialogChooseArtFromListaArtMainList.setAdapter(mCurrentAdapter);
|
||||
binding.itemsList.setAdapter(mCurrentAdapter);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -68,11 +68,11 @@ public class DialogChooseArtsFromMtbAartListView extends BaseDialogFragment impl
|
||||
.inject(this);
|
||||
|
||||
|
||||
var cancelable = false;
|
||||
setCancelable(false);
|
||||
|
||||
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
|
||||
.setView(mBindings.getRoot())
|
||||
.setCancelable(cancelable)
|
||||
.setCancelable(isCancelable())
|
||||
.setPositiveButton(R.string.ok, (dialog, which) -> {
|
||||
var selectedArts = Stream.of(this.artsItemModels)
|
||||
.filter(x -> x.getSelected().get())
|
||||
@@ -96,7 +96,7 @@ public class DialogChooseArtsFromMtbAartListView extends BaseDialogFragment impl
|
||||
|
||||
|
||||
alertDialog.setOnShowListener(this);
|
||||
alertDialog.setCanceledOnTouchOutside(cancelable);
|
||||
alertDialog.setCanceledOnTouchOutside(isCancelable());
|
||||
return alertDialog;
|
||||
}
|
||||
|
||||
|
||||
@@ -111,11 +111,11 @@ public class DialogChooseArtsFromMtbColrList extends BaseDialogFragment implemen
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
var cancelable = false;
|
||||
setCancelable(false);
|
||||
|
||||
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
|
||||
.setView(mBindings.getRoot())
|
||||
.setCancelable(cancelable)
|
||||
.setCancelable(isCancelable())
|
||||
.setPositiveButton(R.string.ok, (dialog, which) -> {
|
||||
var selectedArts = Stream.of(this.mtbColrItemModels)
|
||||
.filter(x -> x.getChecked().get())
|
||||
@@ -137,7 +137,7 @@ public class DialogChooseArtsFromMtbColrList extends BaseDialogFragment implemen
|
||||
|
||||
|
||||
alertDialog.setOnShowListener(this);
|
||||
alertDialog.setCanceledOnTouchOutside(cancelable);
|
||||
alertDialog.setCanceledOnTouchOutside(isCancelable());
|
||||
return alertDialog;
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ public class DialogChooseArtFromListaMtbColrAdapter extends RecyclerView.Adapter
|
||||
}
|
||||
|
||||
public void bind(MtbAart mtbAart) {
|
||||
mViewDataBinding.setMtbAart(mtbAart);
|
||||
mViewDataBinding.setItem(mtbAart);
|
||||
mViewDataBinding.executePendingBindings();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,18 +55,18 @@ public class DialogChooseArtFromListaMtbColrView {
|
||||
}
|
||||
|
||||
private void initRecyclerView(DialogChooseArtFromListaArtBinding binding, List<MtbColr> dataset) {
|
||||
binding.dialogChooseArtFromListaArtMainList.setNestedScrollingEnabled(false);
|
||||
binding.itemsList.setNestedScrollingEnabled(false);
|
||||
|
||||
binding.dialogChooseArtFromListaArtMainList.setHasFixedSize(true);
|
||||
binding.itemsList.setHasFixedSize(true);
|
||||
|
||||
binding.dialogChooseArtFromListaArtMainList.setLayoutManager(new LinearLayoutManager(currentContext));
|
||||
binding.itemsList.setLayoutManager(new LinearLayoutManager(currentContext));
|
||||
|
||||
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(currentContext, SimpleDividerItemDecoration.VERTICAL);
|
||||
itemDecorator.setDrawable(ContextCompat.getDrawable(currentContext, R.drawable.divider));
|
||||
binding.dialogChooseArtFromListaArtMainList.addItemDecoration(itemDecorator);
|
||||
binding.itemsList.addItemDecoration(itemDecorator);
|
||||
|
||||
currentAdapter = new DialogChooseArtFromListaMtbColrAdapter(currentContext, dataset, onItemClicked);
|
||||
binding.dialogChooseArtFromListaArtMainList.setAdapter(currentAdapter);
|
||||
binding.itemsList.setAdapter(currentAdapter);
|
||||
}
|
||||
|
||||
private IRecyclerItemClicked<MtbColr> onItemClicked = (item, position) -> {
|
||||
|
||||
@@ -82,14 +82,14 @@ public class DialogInputPesoLUView extends BaseDialogFragment {
|
||||
|
||||
this.init();
|
||||
|
||||
var cancelable = false;
|
||||
setCancelable(false);
|
||||
|
||||
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
|
||||
.setView(mBindings.getRoot())
|
||||
.setCancelable(cancelable)
|
||||
.setCancelable(isCancelable())
|
||||
.create();
|
||||
|
||||
alertDialog.setCanceledOnTouchOutside(cancelable);
|
||||
alertDialog.setCanceledOnTouchOutside(isCancelable());
|
||||
alertDialog.setOnShowListener(this);
|
||||
return alertDialog;
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ public class DialogInputQuantityV2DTO {
|
||||
private BigDecimal totalNumCnfAvailable;
|
||||
private BigDecimal qtaCnfAvailable;
|
||||
|
||||
private boolean canInputZeroQuantity = false;
|
||||
private boolean canPartitaMagBeChanged = true;
|
||||
private boolean isDataScadMandatory = false;
|
||||
private boolean isNotesAllowed = false;
|
||||
@@ -214,6 +215,15 @@ public class DialogInputQuantityV2DTO {
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isCanInputZeroQuantity() {
|
||||
return canInputZeroQuantity;
|
||||
}
|
||||
|
||||
public DialogInputQuantityV2DTO setCanInputZeroQuantity(boolean canInputZeroQuantity) {
|
||||
this.canInputZeroQuantity = canInputZeroQuantity;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isCanPartitaMagBeChanged() {
|
||||
return canPartitaMagBeChanged;
|
||||
}
|
||||
|
||||
@@ -165,6 +165,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
|
||||
.setQtaCnfToBeTaken(mDialogInputQuantityV2DTO.getQtaCnfToBeTaken())
|
||||
.setTotalNumCnfAvailable(mDialogInputQuantityV2DTO.getTotalNumCnfAvailable())
|
||||
.setTotalQtaAvailable(mDialogInputQuantityV2DTO.getTotalQtaAvailable())
|
||||
.setCanInputZeroQuantity(mDialogInputQuantityV2DTO.isCanInputZeroQuantity())
|
||||
.setCanOverflowOrderQuantity(mDialogInputQuantityV2DTO.isCanOverflowOrderQuantity())
|
||||
.setQtaCnfAvailable(mDialogInputQuantityV2DTO.getQtaCnfAvailable())
|
||||
.setPartitaMag(mDialogInputQuantityV2DTO.getPartitaMag())
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user