Completamento inventario WMS
This commit is contained in:
parent
1512cb7de9
commit
f967514f97
@ -78,6 +78,7 @@
|
|||||||
android:name=".gest.inventario.picking.PickingInventarioActivity"
|
android:name=".gest.inventario.picking.PickingInventarioActivity"
|
||||||
android:label="@string/activity_picking_inventario_title"
|
android:label="@string/activity_picking_inventario_title"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
|
android:windowSoftInputMode="adjustNothing"
|
||||||
android:theme="@style/Light"/>
|
android:theme="@style/Light"/>
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
|
|||||||
@ -20,7 +20,8 @@ public interface InventarioDao extends EntityDaoInterface<InventarioRoomDTO> {
|
|||||||
|
|
||||||
|
|
||||||
@Query("SELECT * FROM " + InventarioRoomDTO.TABLE_NAME +
|
@Query("SELECT * FROM " + InventarioRoomDTO.TABLE_NAME +
|
||||||
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))")
|
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
|
||||||
|
" ORDER BY " + InventarioRoomDTO.Columns.DATA_INVENTARIO + " DESC")
|
||||||
Flowable<List<InventarioRoomDTO>> selectAllFlowable(boolean toBeSync);
|
Flowable<List<InventarioRoomDTO>> selectAllFlowable(boolean toBeSync);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -57,7 +57,7 @@ public class InventarioRESTConsumer extends _BaseRESTConsumer {
|
|||||||
var request = new InsertInventarioRequestDTO()
|
var request = new InsertInventarioRequestDTO()
|
||||||
.setMtbInvent(inventarioToInsert);
|
.setMtbInvent(inventarioToInsert);
|
||||||
|
|
||||||
var inventarioRESTConsumerService = RESTBuilder.getService(InventarioRESTConsumerService.class);
|
var inventarioRESTConsumerService = RESTBuilder.getService(InventarioRESTConsumerService.class, 120);
|
||||||
inventarioRESTConsumerService
|
inventarioRESTConsumerService
|
||||||
.insert(inventarioToInsert.getIdInventario(), request)
|
.insert(inventarioToInsert.getIdInventario(), request)
|
||||||
.enqueue(new Callback<>() {
|
.enqueue(new Callback<>() {
|
||||||
|
|||||||
@ -43,33 +43,21 @@ public class PermissionsHelper {
|
|||||||
|
|
||||||
|
|
||||||
activity.setOnRequestPermissionsResult((requestCode, permissions, grantResults) -> {
|
activity.setOnRequestPermissionsResult((requestCode, permissions, grantResults) -> {
|
||||||
switch (requestCode) {
|
if (requestCode == 1) {
|
||||||
case 1: {
|
boolean allGranted = Stream.of(grantResults).allMatch(x -> x == PackageManager.PERMISSION_GRANTED);
|
||||||
|
|
||||||
boolean allGranted = Stream.of(grantResults).allMatch(x -> x == PackageManager.PERMISSION_GRANTED);
|
// If request is cancelled, the result arrays are empty.
|
||||||
|
if (grantResults.size() > 0 && allGranted) {
|
||||||
|
onPermissionsConfirmed.run();
|
||||||
|
|
||||||
// If request is cancelled, the result arrays are empty.
|
} else {
|
||||||
if (grantResults.size() > 0 && allGranted) {
|
boolean anyPermDeny = shouldShowRequestPermissionRationale(activity, permissions);
|
||||||
|
onPermissionsDenied.run(anyPermDeny);
|
||||||
onPermissionsConfirmed.run();
|
|
||||||
|
|
||||||
} else {
|
|
||||||
boolean anyPermDeny = shouldShowRequestPermissionRationale( activity, permissions );
|
|
||||||
|
|
||||||
onPermissionsDenied.run(anyPermDeny);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// other 'case' lines to check for other
|
|
||||||
// permissions this app might request
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ActivityCompat.requestPermissions(activity, permissionArray,1);
|
ActivityCompat.requestPermissions(activity, permissionArray,1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean shouldShowRequestPermissionRationale(AppCompatActivity activity, String[] permissions) {
|
private static boolean shouldShowRequestPermissionRationale(AppCompatActivity activity, String[] permissions) {
|
||||||
|
|||||||
@ -0,0 +1,18 @@
|
|||||||
|
package it.integry.integrywmsnative.core.utility;
|
||||||
|
|
||||||
|
import androidx.lifecycle.LiveData;
|
||||||
|
import androidx.lifecycle.Observer;
|
||||||
|
|
||||||
|
public class UtilityLiveData {
|
||||||
|
|
||||||
|
public static <T> void observeOnce(final LiveData<T> liveData, final Observer<T> observer) {
|
||||||
|
liveData.observeForever(new Observer<T>() {
|
||||||
|
@Override
|
||||||
|
public void onChanged(T t) {
|
||||||
|
liveData.removeObserver(this);
|
||||||
|
observer.onChanged(t);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -64,7 +64,8 @@ public class ElencoInventariViewModel {
|
|||||||
|
|
||||||
var matchedInventory = getInventarioList().getValue()
|
var matchedInventory = getInventarioList().getValue()
|
||||||
.stream()
|
.stream()
|
||||||
.filter(x -> Objects.equals(x.getIdInventario(), inventoryId) && UtilityString.equalsIgnoreCase(x.getZona(), zone))
|
.filter(x -> Objects.equals(x.getIdInventario(), inventoryId) && UtilityString.equalsIgnoreCase(x.getZona(), zone) &&
|
||||||
|
!x.isSyncronized())
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
|
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import com.ravikoradiya.liveadapter.Type;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
@ -89,19 +90,23 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn
|
|||||||
.inject(this);
|
.inject(this);
|
||||||
|
|
||||||
mViewModel.setListener(this);
|
mViewModel.setListener(this);
|
||||||
|
mBindings.setViewmodel(mViewModel);
|
||||||
|
|
||||||
|
initToolbar();
|
||||||
|
initBarcodeReader();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
|
||||||
mViewModel.init(
|
mViewModel.init(
|
||||||
DataCache.retrieveItem(getIntent().getStringExtra(KEY_INVENTARIO)),
|
DataCache.retrieveItem(getIntent().getStringExtra(KEY_INVENTARIO)),
|
||||||
DataCache.retrieveItem(getIntent().getStringExtra(KEY_INVENTARIO_ARTS)));
|
DataCache.retrieveItem(getIntent().getStringExtra(KEY_INVENTARIO_ARTS)));
|
||||||
mBindings.setViewmodel(mViewModel);
|
|
||||||
|
|
||||||
initToolbar();
|
|
||||||
initRecyclerView();
|
initRecyclerView();
|
||||||
initBarcodeReader();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onSupportNavigateUp() {
|
public boolean onSupportNavigateUp() {
|
||||||
onBackPressed();
|
onBackPressed();
|
||||||
@ -127,6 +132,8 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn
|
|||||||
});
|
});
|
||||||
|
|
||||||
var itemType = new Type<InventarioRowRoomDTO, ActivityPickingInventarioListItemBinding>(R.layout.activity_picking_inventario__list_item, BR.item);
|
var itemType = new Type<InventarioRowRoomDTO, ActivityPickingInventarioListItemBinding>(R.layout.activity_picking_inventario__list_item, BR.item);
|
||||||
|
itemType.areItemSame((oldItem, newItem) -> Objects.equals(oldItem.getId(), newItem.getId()));
|
||||||
|
itemType.areContentsTheSame((oldItem, newItem) -> Objects.equals(oldItem.getId(), newItem.getId()));
|
||||||
itemType.onClick(x -> {
|
itemType.onClick(x -> {
|
||||||
new BottomSheetInventarioRowActionsView(x.getBinding().getItem())
|
new BottomSheetInventarioRowActionsView(x.getBinding().getItem())
|
||||||
.setListener(new BottomSheetInventarioRowActionsView.Listener() {
|
.setListener(new BottomSheetInventarioRowActionsView.Listener() {
|
||||||
|
|||||||
@ -2,12 +2,14 @@ package it.integry.integrywmsnative.gest.inventario.picking;
|
|||||||
|
|
||||||
import androidx.lifecycle.LiveData;
|
import androidx.lifecycle.LiveData;
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
import androidx.lifecycle.ViewModel;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||||
@ -26,11 +28,12 @@ import it.integry.integrywmsnative.core.rest.model.inventario.InventarioArtDTO;
|
|||||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityLiveData;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||||
|
|
||||||
public class PickingInventarioViewModel {
|
public class PickingInventarioViewModel extends ViewModel {
|
||||||
|
|
||||||
|
|
||||||
private final InventarioRepository inventarioRepository;
|
private final InventarioRepository inventarioRepository;
|
||||||
@ -50,9 +53,38 @@ public class PickingInventarioViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void init(InventarioRoomDTO inventarioRoomDTO, List<InventarioArtDTO> inventarioArts) {
|
public void init(InventarioRoomDTO inventarioRoomDTO, List<InventarioArtDTO> inventarioArts) {
|
||||||
|
this.sendOnLoadingStarted();
|
||||||
|
|
||||||
this.currentInventario.postValue(inventarioRoomDTO);
|
this.currentInventario.postValue(inventarioRoomDTO);
|
||||||
this.currentInventarioRows = inventarioRowRepository.retrieve(inventarioRoomDTO.getId());
|
this.currentInventarioRows = inventarioRowRepository.retrieve(inventarioRoomDTO.getId());
|
||||||
this.availableInventarioArts = inventarioArts == null ? new ArrayList<>() : inventarioArts;
|
this.availableInventarioArts = inventarioArts == null ? new ArrayList<>() : inventarioArts;
|
||||||
|
|
||||||
|
UtilityLiveData.observeOnce(this.currentInventarioRows, data -> {
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
});
|
||||||
|
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void generateRandomItems() {
|
||||||
|
for (int i = 0; i < 500; i++) {
|
||||||
|
Random r = new Random();
|
||||||
|
int randomIndex = r.nextInt(availableInventarioArts.size());
|
||||||
|
|
||||||
|
|
||||||
|
var item = getAvailableArts().get(randomIndex);
|
||||||
|
var itemMtbAart = item.toMtbAart();
|
||||||
|
|
||||||
|
var fakePickingObjectDto = new PickingObjectDTO()
|
||||||
|
.setMtbAart(itemMtbAart);
|
||||||
|
|
||||||
|
var qta = BigDecimal.valueOf(r.nextInt(50));
|
||||||
|
var numCnf = UtilityBigDecimal.multiply(qta, itemMtbAart.getQtaCnf());
|
||||||
|
|
||||||
|
saveNewRow(fakePickingObjectDto, qta, itemMtbAart.getQtaCnf(), numCnf, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public LiveData<InventarioRoomDTO> getCurrentInventario() {
|
public LiveData<InventarioRoomDTO> getCurrentInventario() {
|
||||||
@ -95,8 +127,13 @@ public class PickingInventarioViewModel {
|
|||||||
|
|
||||||
|
|
||||||
public void exportAll(Runnable onComplete) {
|
public void exportAll(Runnable onComplete) {
|
||||||
|
this.sendOnLoadingStarted();
|
||||||
currentInventario.getValue().setInventarioRowList(this.currentInventarioRows.getValue());
|
currentInventario.getValue().setInventarioRowList(this.currentInventarioRows.getValue());
|
||||||
this.inventarioRepository.export(currentInventario.getValue(), onComplete, this::sendError);
|
|
||||||
|
this.inventarioRepository.export(currentInventario.getValue(), () -> {
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
onComplete.run();
|
||||||
|
}, this::sendError);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user