Finish v1_9_2(96)

This commit is contained in:
Valerio Castellana 2019-11-13 15:58:27 +01:00
commit 3a9b190c96
39 changed files with 845 additions and 332 deletions

View File

@ -1,5 +1,5 @@
<component name="ProjectRunConfigurationManager"> <component name="ProjectRunConfigurationManager">
<configuration default="false" name="app_saporiveri_pv" type="AndroidRunConfigurationType" factoryName="Android App"> <configuration default="false" name="app_saporiveri_pv" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
<module name="app" /> <module name="app" />
<option name="DEPLOY" value="true" /> <option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" /> <option name="DEPLOY_APK_FROM_BUNDLE" value="false" />

View File

@ -17,8 +17,8 @@ apply plugin: 'com.google.gms.google-services'
android { android {
def appVersionCode = 95 def appVersionCode = 96
def appVersionName = '1.9.1' def appVersionName = '1.9.2'
signingConfigs { signingConfigs {
release { release {

View File

@ -12,16 +12,13 @@ import com.google.android.material.navigation.NavigationView;
import androidx.core.view.GravityCompat; import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout; import androidx.drawerlayout.widget.DrawerLayout;
import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SearchView; import androidx.appcompat.widget.SearchView;
import android.view.KeyEvent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.SubMenu; import android.view.SubMenu;
import android.view.View; import android.view.View;
import android.widget.Toast;
import androidx.fragment.app.FragmentTransaction; import androidx.fragment.app.FragmentTransaction;
@ -169,7 +166,7 @@ public class MainActivity extends BaseActivity
private void initGestMenu() { private void initGestMenu() {
Menu menu = mBinding.navView.getMenu(); Menu menu = mBinding.navView.getMenu();
ICustomConfiguration customConfiguration = ClassRouter.getIstance(ClassRouter.PATH.CUSTOM_CONFIGURATION); ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION); BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION);
List<MenuConfiguration.MenuGroup> menuGroups = menuConfiguration.getGroups(); List<MenuConfiguration.MenuGroup> menuGroups = menuConfiguration.getGroups();
@ -196,7 +193,7 @@ public class MainActivity extends BaseActivity
} }
private MenuConfiguration.MenuItem getMenuItem(@IdRes int menuId) { private MenuConfiguration.MenuItem getMenuItem(@IdRes int menuId) {
ICustomConfiguration customConfiguration = ClassRouter.getIstance(ClassRouter.PATH.CUSTOM_CONFIGURATION); ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION); BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION);
List<MenuConfiguration.MenuGroup> menuGroups = menuConfiguration.getGroups(); List<MenuConfiguration.MenuGroup> menuGroups = menuConfiguration.getGroups();
@ -315,7 +312,7 @@ public class MainActivity extends BaseActivity
private void init(){ private void init(){
ServerStatusChecker.getIstance().addCallback(value -> { ServerStatusChecker.getInstance().addCallback(value -> {
if(value && (!mIsOnline || firstCheckExecution)){ if(value && (!mIsOnline || firstCheckExecution)){
SettingsManager.loadDBVariables(() -> { SettingsManager.loadDBVariables(() -> {

View File

@ -12,6 +12,7 @@ public class BaseCustomConfiguration implements ICustomConfiguration {
public static class Keys { public static class Keys {
public static int MENU_CONFIGURATION = 0; public static int MENU_CONFIGURATION = 0;
public static int FLAG_SHOW_COD_FORN_IN_SPEDIZIONE = 1; public static int FLAG_SHOW_COD_FORN_IN_SPEDIZIONE = 1;
public static int CUSTOM_DYNAMIC_VERSION_PATH = 2;
} }
protected HashMap<Integer, Object> configurations = new HashMap<Integer, Object>() {{ protected HashMap<Integer, Object> configurations = new HashMap<Integer, Object>() {{

View File

@ -59,7 +59,7 @@ public class ClassRouter {
} }
public static <T> T getIstance(PATH path) { public static <T> T getInstance(PATH path) {
try { try {
if (!checkIClassExists(path)) { if (!checkIClassExists(path)) {

View File

@ -1,6 +1,7 @@
package it.integry.integrywmsnative.core.data_store.db.dao; package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao; import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert; import androidx.room.Insert;
import androidx.room.Query; import androidx.room.Query;
import androidx.room.Update; import androidx.room.Update;
@ -39,7 +40,7 @@ public interface ArticoloOrdineDao {
@Query("SELECt * from articoli_ordine where cod_mart = :codMart and id_ordine = :ordineId LIMIT 1") @Query("SELECt * from articoli_ordine where cod_mart = :codMart and id_ordine = :ordineId LIMIT 1")
ArticoloOrdine findArticoloByCodMartAndOrdine(int ordineId, String codMart); ArticoloOrdine findArticoloByCodMartAndOrdine(int ordineId, String codMart);
@Query( " SELECT articoli_ordine.* " + @Query(" SELECT articoli_ordine.* " +
" FROM articoli_ordine " + " FROM articoli_ordine " +
" LEFT OUTER JOIN articoli_griglia on articoli_ordine.cod_mart = articoli_griglia.cod_mart " + " LEFT OUTER JOIN articoli_griglia on articoli_ordine.cod_mart = articoli_griglia.cod_mart " +
" WHERE " + " WHERE " +
@ -50,4 +51,8 @@ public interface ArticoloOrdineDao {
" AND articoli_ordine.id_ordine = :ordineId " + " AND articoli_ordine.id_ordine = :ordineId " +
" LIMIT 1") " LIMIT 1")
ArticoloOrdine findArticoloByBarcodeAndOrdine(int ordineId, String barcode); ArticoloOrdine findArticoloByBarcodeAndOrdine(int ordineId, String barcode);
@Delete
void delete(ArticoloOrdine articolo);
} }

View File

@ -1,6 +1,7 @@
package it.integry.integrywmsnative.core.data_store.db.dao; package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao; import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert; import androidx.room.Insert;
import androidx.room.Query; import androidx.room.Query;
import androidx.room.Update; import androidx.room.Update;
@ -27,4 +28,7 @@ public interface OrdineDao {
@Update @Update
void update(Ordine ordine); void update(Ordine ordine);
@Delete
void delete(Ordine ordine);
} }

View File

@ -143,7 +143,8 @@ public class Ordine {
} }
public void setCodMdep(@Nullable String codMdep) { public void setCodMdep(@Nullable String codMdep) {
this.codMdep = codMdep; } this.codMdep = codMdep;
}
public void setDataOrdS(String dataOrd) { public void setDataOrdS(String dataOrd) {
setDataOrd(UtilityDate.recognizeDateWithExceptionHandler(dataOrd)); setDataOrd(UtilityDate.recognizeDateWithExceptionHandler(dataOrd));

View File

@ -94,4 +94,16 @@ public void findArticoloByScanAndOrdine(Ordine ordine, String barcode, RunnableA
} }
}); });
} }
public void deleteArticolo(ArticoloOrdine articolo, Runnable onSave, RunnableArgs<Exception> onError) {
execute(()->{
try{
mRepository.delete(articolo);
onSave.run();
}catch (Exception e){
onError.run(e);
}
});
}
} }

View File

@ -10,7 +10,7 @@ import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGrigl
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper; import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class OrdineRepository extends Repository{ public class OrdineRepository extends Repository {
private OrdineDao mRepository; private OrdineDao mRepository;
@ -18,44 +18,45 @@ public class OrdineRepository extends Repository{
this.mRepository = MainApplication.getOrdiniRepository(); this.mRepository = MainApplication.getOrdiniRepository();
} }
public void selectAll(RunnableArgs<List<Ordine>> onSuccess, RunnableArgs<Exception> onError){ public void selectAll(RunnableArgs<List<Ordine>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = ()->{ Runnable query = () -> {
try{ try {
onSuccess.run(mRepository.getAll()); onSuccess.run(mRepository.getAll());
}catch (Exception e){ } catch (Exception e) {
onError.run(e); onError.run(e);
} }
}; };
execute(query); execute(query);
} }
public void selectAllTransmitted(RunnableArgs<List<OrdineWithGriglia>> onSuccess, RunnableArgs<Exception> onError){
Runnable query = ()->{ public void selectAllTransmitted(RunnableArgs<List<OrdineWithGriglia>> onSuccess, RunnableArgs<Exception> onError) {
try{ Runnable query = () -> {
try {
onSuccess.run(mRepository.getAllTrasnmitted()); onSuccess.run(mRepository.getAllTrasnmitted());
}catch (Exception e){ } catch (Exception e) {
onError.run(e); onError.run(e);
} }
}; };
execute(query); execute(query);
} }
public void selectAllOpenOrders(Griglia griglia, RunnableArgs<List<OrdineWrapper>> onSuccess, RunnableArgs<Exception> onError){ public void selectAllOpenOrders(Griglia griglia, RunnableArgs<List<OrdineWrapper>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = ()->{ Runnable query = () -> {
try{ try {
onSuccess.run(mRepository.getAllOpenOrdersByGriglia(griglia.getGrigliaId())); onSuccess.run(mRepository.getAllOpenOrdersByGriglia(griglia.getGrigliaId()));
}catch (Exception e){ } catch (Exception e) {
onError.run(e); onError.run(e);
} }
}; };
execute(query); execute(query);
} }
public void insert(Ordine ordine, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError){ public void insert(Ordine ordine, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
execute(()->{ execute(() -> {
try{ try {
Long id = mRepository.insert(ordine); Long id = mRepository.insert(ordine);
onSuccess.run(id.intValue()); onSuccess.run(id.intValue());
}catch (Exception e){ } catch (Exception e) {
onError.run(e); onError.run(e);
} }
}); });
@ -63,11 +64,22 @@ public class OrdineRepository extends Repository{
public void updateOrder(Ordine ordine, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) { public void updateOrder(Ordine ordine, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) {
execute(()->{ execute(() -> {
try{ try {
mRepository.update(ordine); mRepository.update(ordine);
onSuccess.run(ordine); onSuccess.run(ordine);
}catch (Exception e){ } catch (Exception e) {
onError.run(e);
}
});
}
public void delete(Ordine ordine, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
mRepository.delete(ordine);
onSuccess.run();
} catch (Exception e) {
onError.run(e); onError.run(e);
} }
}); });

View File

@ -11,8 +11,10 @@ public class BaseActivity extends AppCompatActivity {
@Override @Override
public boolean dispatchKeyEvent(KeyEvent event) { public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getDeviceId() != -1 && event.getDeviceId() != 0 && event.getAction() == KeyEvent.ACTION_DOWN){ if (event.getDeviceId() != -1 && event.getDeviceId() != 0) {
BarcodeManager.onKeyDown(event.getKeyCode(),event); if (event.getAction() == KeyEvent.ACTION_DOWN) {
BarcodeManager.onKeyDown(event.getKeyCode(), event);
}
return false; return false;
} }
return super.dispatchKeyEvent(event); return super.dispatchKeyEvent(event);

View File

@ -37,7 +37,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
public static void getArticoliListino(String codAlis, RunnableArgs<GrigliaDTO> onSuccess, RunnableArgs<Exception> onFailed) { public static void getArticoliListino(String codAlis, RunnableArgs<GrigliaDTO> onSuccess, RunnableArgs<Exception> onFailed) {
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class); PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class);
ordiniARestService ordiniARestService
.getArticoliListino(codAlis, SettingsManager.i().userSession.profileDB, SettingsManager.i().user.username, SettingsManager.i().user.password) .getArticoliListino(codAlis)
.enqueue(new Callback<ServiceRESTResponse<GrigliaDTO>>() { .enqueue(new Callback<ServiceRESTResponse<GrigliaDTO>>() {
@Override @Override
public void onResponse(Call<ServiceRESTResponse<GrigliaDTO>> call, Response<ServiceRESTResponse<GrigliaDTO>> response) { public void onResponse(Call<ServiceRESTResponse<GrigliaDTO>> call, Response<ServiceRESTResponse<GrigliaDTO>> response) {
@ -94,7 +94,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class); PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class);
ordiniARestService ordiniARestService
.saveOrdine(saveDTO, SettingsManager.i().userSession.profileDB, SettingsManager.i().user.username, SettingsManager.i().user.password) .saveOrdine(saveDTO)
.enqueue(new Callback<List<ServiceRESTResponse<DtbOrdt>>>() { .enqueue(new Callback<List<ServiceRESTResponse<DtbOrdt>>>() {
@Override @Override
public void onResponse(Call<List<ServiceRESTResponse<DtbOrdt>>> call, Response<List<ServiceRESTResponse<DtbOrdt>>> response) { public void onResponse(Call<List<ServiceRESTResponse<DtbOrdt>>> call, Response<List<ServiceRESTResponse<DtbOrdt>>> response) {

View File

@ -15,8 +15,8 @@ import retrofit2.http.Query;
public interface PVOrdiniAcquistoRESTConsumerService { public interface PVOrdiniAcquistoRESTConsumerService {
@POST("SM2GetElencoArticoli") @POST("SM2GetElencoArticoli")
Call<ServiceRESTResponse<GrigliaDTO>> getArticoliListino(@Query("chiaveGriglia") String codAlis, @Query("profileDb") String profileDb, @Header("username") String username, @Header("password") String password); Call<ServiceRESTResponse<GrigliaDTO>> getArticoliListino(@Query("chiaveGriglia") String codAlis);
@POST("SM2SaveTerminalino") @POST("SM2SaveTerminalino")
Call<List<ServiceRESTResponse<DtbOrdt>>> saveOrdine(@Body SaveDTO saveDTO, @Query("profileDb") String profileDb, @Header("username") String username, @Header("password") String password); Call<List<ServiceRESTResponse<DtbOrdt>>> saveOrdine(@Body SaveDTO saveDTO);
} }

View File

@ -12,7 +12,7 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
public class ServerStatusChecker { public class ServerStatusChecker {
private static ServerStatusChecker istance = new ServerStatusChecker(); private static ServerStatusChecker instance = new ServerStatusChecker();
private List<RunnableArgs<Boolean>> mCallback = new ArrayList<>(); private List<RunnableArgs<Boolean>> mCallback = new ArrayList<>();
@ -47,17 +47,17 @@ public class ServerStatusChecker {
public static void init(){ public static void init(){
istance.shouldExecute = true; instance.shouldExecute = true;
istance.handler.post(istance.runnableCode); instance.handler.post(instance.runnableCode);
} }
public static void dispose() { public static void dispose() {
istance.shouldExecute = false; instance.shouldExecute = false;
} }
public static ServerStatusChecker getIstance() { public static ServerStatusChecker getInstance() {
return istance; return instance;
} }
} }

View File

@ -4,7 +4,6 @@ import android.app.Activity;
import android.app.DownloadManager; import android.app.DownloadManager;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.net.Uri; import android.net.Uri;
@ -12,23 +11,33 @@ import android.os.Build;
import android.os.Environment; import android.os.Environment;
import com.github.javiersantos.appupdater.AppUpdater; import com.github.javiersantos.appupdater.AppUpdater;
import com.github.javiersantos.appupdater.AppUpdaterUtils;
import com.github.javiersantos.appupdater.enums.AppUpdaterError;
import com.github.javiersantos.appupdater.enums.Display; import com.github.javiersantos.appupdater.enums.Display;
import com.github.javiersantos.appupdater.enums.UpdateFrom; import com.github.javiersantos.appupdater.enums.UpdateFrom;
import com.github.javiersantos.appupdater.objects.Update;
import java.io.File; import java.io.File;
import androidx.core.content.FileProvider;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
public class UpdatesManager { public class UpdatesManager {
public static void init(Activity context) { public static void init(Activity context) {
String suffix;
ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
try{
suffix = customConfiguration.getConfig(BaseCustomConfiguration.Keys.CUSTOM_DYNAMIC_VERSION_PATH);
if (suffix == null){
suffix = "";
}
}catch (Exception e){
suffix = "";
}
String currentVersionUrl = "http://" + SettingsManager.i().server.host + ":" + SettingsManager.i().server.port + "/ems-api/wms/currentVersion"; String currentVersionUrl = "http://" + SettingsManager.i().server.host + ":" + SettingsManager.i().server.port + "/ems-api/wms/currentVersion";
String currentDownloadUrl = "http://" + SettingsManager.i().server.host + ":" + SettingsManager.i().server.port + "/ems-api/wms/android-release_v2.apk"; String currentDownloadUrl = "http://" + SettingsManager.i().server.host + ":" + SettingsManager.i().server.port + "/ems-api/wms/android-release"+suffix+"_v2.apk";
AppUpdater appUpdater = new AppUpdater(context) AppUpdater appUpdater = new AppUpdater(context)

View File

@ -94,7 +94,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
private void init(){ private void init(){
ServerStatusChecker.getIstance().addCallback(value -> { ServerStatusChecker.getInstance().addCallback(value -> {
if(value && mBindings.noConnectionTopLayout.isExpanded()){ if(value && mBindings.noConnectionTopLayout.isExpanded()){
collapseNoConnectionLayout(); collapseNoConnectionLayout();
@ -215,7 +215,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
private void initGestMenu() { private void initGestMenu() {
ICustomConfiguration customConfiguration = ClassRouter.getIstance(ClassRouter.PATH.CUSTOM_CONFIGURATION); ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION); BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION);
List<MenuConfiguration.MenuGroup> menuGroups = menuConfiguration.getGroups(); List<MenuConfiguration.MenuGroup> menuGroups = menuConfiguration.getGroups();

View File

@ -28,10 +28,12 @@ import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsu
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.ActivityPvordineAcquistoEditBinding; import it.integry.integrywmsnative.databinding.ActivityPvOrdineAcquistoEditBinding;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.adapter.OrdineAcquistoArtListAdapter; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.adapter.OrdineAcquistoArtListAdapter;
import it.integry.integrywmsnative.view.dialogs.DialogAskAction;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper;
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class PVOrdineAcquistoEditActivity extends BaseActivity { public class PVOrdineAcquistoEditActivity extends BaseActivity {
@ -40,7 +42,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
private Griglia mGriglia; private Griglia mGriglia;
private List<ArticoloOrdine> mArticoli = new ArrayList<>(); private List<ArticoloOrdine> mArticoli = new ArrayList<>();
private PVEditOrderHelper mhelper; private PVEditOrderHelper mhelper;
private ActivityPvordineAcquistoEditBinding mBinding; private ActivityPvOrdineAcquistoEditBinding mBinding;
private int mBarcodeScannerIstanceID; private int mBarcodeScannerIstanceID;
private OrdineAcquistoArtListAdapter mAdapter; private OrdineAcquistoArtListAdapter mAdapter;
@ -49,15 +51,22 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
mhelper = new PVEditOrderHelper(this); mhelper = new PVEditOrderHelper(this);
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_pvordine_acquisto_edit); mBinding = DataBindingUtil.setContentView(this, R.layout.activity_pv_ordine_acquisto_edit);
mBinding.setViewModel(this); mBinding.setViewModel(this);
mOrdine = DataCache.retrieveItem(getIntent().getStringExtra("keyOrdine")); mOrdine = DataCache.retrieveItem(getIntent().getStringExtra("keyOrdine"));
if (mOrdine.isTransmitted()){ setSupportActionBar(mBinding.toolbar);
mBinding.toolbar.setTitle(R.string.edit_order);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
if (mOrdine.isTransmitted()) {
Toast.makeText(this, "Impossibile modificare ordine esportato", Toast.LENGTH_SHORT).show(); Toast.makeText(this, "Impossibile modificare ordine esportato", Toast.LENGTH_SHORT).show();
closeEdit(); closeEdit();
} }
String testataOrdString = String.format(this.getString(R.string.ord_acq_testata), String.valueOf(mOrdine.getOrdineId()), UtilityDate.formatDate(mOrdine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); String testataOrdString = String.format(this.getString(R.string.ord_acq_testata), String.valueOf(mOrdine.getOrdineId()), UtilityDate.formatDate(mOrdine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
mBinding.orderIdentifier.setText(Html.fromHtml(testataOrdString)); mBinding.orderIdentifier.setText(Html.fromHtml(testataOrdString));
FabMenuCustomAnimations.changeIconOnFocus(mBinding.closeActivityFab, R.drawable.ic_check_white_24dp, R.drawable.ic_close_24dp);
initRecyclerView(); initRecyclerView();
fetchDetails(); fetchDetails();
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
@ -66,6 +75,12 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
} }
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
private void initRecyclerView() { private void initRecyclerView() {
mBinding.articoliOrdineList.setHasFixedSize(true); mBinding.articoliOrdineList.setHasFixedSize(true);
@ -74,18 +89,47 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
DividerItemDecoration itemDecorator = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL); DividerItemDecoration itemDecorator = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider)); itemDecorator.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider));
mBinding.articoliOrdineList.addItemDecoration(itemDecorator); mBinding.articoliOrdineList.addItemDecoration(itemDecorator);
mAdapter = new OrdineAcquistoArtListAdapter(this, mArticoli, this::addArticolo); mAdapter = new OrdineAcquistoArtListAdapter(this, mArticoli, this::selectAction);
mBinding.articoliOrdineList.setAdapter(mAdapter); mBinding.articoliOrdineList.setAdapter(mAdapter);
} }
private void selectAction(ArticoloOrdine articoloOrdine) {
mBinding.closeActivityFab.close(false);
BarcodeManager.disable();
runOnUiThread(() -> DialogAskAction.make(this,
articoloOrdine.getDescrizione(),
articoloOrdine.getQtaOrd() + " " + articoloOrdine.getUntMis(),
() -> this.addArticolo(articoloOrdine),
() -> this.deleteArticolo(articoloOrdine)).show());
}
private void deleteArticolo(ArticoloOrdine articoloOrdine) {
String text = "Stai per eliminare l'articolo <b> " + articoloOrdine.getDescrizione() + "</b> dall'ordine, <br> sei sicuro?";
DialogSimpleMessageHelper.makeWarningDialog(this, new SpannableString(Html.fromHtml(text)), null, () -> this.runOnUiThread(() -> {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
mhelper.removeArticoloFromOrdine(articoloOrdine, () -> {
progress.dismiss();
BarcodeManager.enable();
runOnUiThread(this::fetchArticoli);
}, e -> {
progress.dismiss();
runOnUiThread(() -> UtilityExceptions.defaultException(this, e));
});
}), () -> {
}).show();
}
private void handleException(Exception ex) { private void handleException(Exception ex) {
runOnUiThread(()->{ runOnUiThread(() -> {
BarcodeManager.enable(); BarcodeManager.enable();
UtilityExceptions.defaultException(this, ex, false); UtilityExceptions.defaultException(this, ex, false);
}); });
} }
private void onScanSuccessful(BarcodeScanDTO dto) { private void onScanSuccessful(BarcodeScanDTO dto) {
mBinding.closeActivityFab.close(false);
BarcodeManager.disable(); BarcodeManager.disable();
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this); final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
mhelper.checkArticolo( mhelper.checkArticolo(
@ -103,16 +147,13 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
} }
private void addArticolo(ArticoloOrdine articoloOrdine) { private void addArticolo(ArticoloOrdine articoloOrdine) {
runOnUiThread(()->{ runOnUiThread(() -> EditArticoloDialog.make(this, articoloOrdine, articolo -> {
EditArticoloDialog.make(this, articoloOrdine, articolo -> { BarcodeManager.enable();
BarcodeManager.enable(); if (articolo != null) {
if (articolo == null) { Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show();
Toast.makeText(this, "Inserimento articolo annullato", Toast.LENGTH_SHORT).show(); }
} else { fetchArticoli();
fetchArticoli(); }).show());
}
}).show();
});
} }
private void fetchDetails() { private void fetchDetails() {
@ -122,7 +163,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
private void fetchGriglia() { private void fetchGriglia() {
mhelper.loadGriglia(mOrdine.getIdGriglia(), griglia -> { mhelper.loadGriglia(mOrdine.getIdGriglia(), griglia -> {
runOnUiThread(()->{ runOnUiThread(() -> {
mGriglia = griglia; mGriglia = griglia;
mBinding.codAlis.setText(mGriglia.getCodAlis()); mBinding.codAlis.setText(mGriglia.getCodAlis());
}); });
@ -134,10 +175,12 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
mhelper.loadArticoli(mOrdine, articoli -> { mhelper.loadArticoli(mOrdine, articoli -> {
progress.dismiss(); progress.dismiss();
mArticoli = articoli; mArticoli = articoli;
runOnUiThread(()->{ runOnUiThread(() -> {
mAdapter.updateItems(mArticoli); mAdapter.updateItems(mArticoli);
mBinding.countArtOrd.setText(String.valueOf(mArticoli.size())); mBinding.countArtOrd.setText(String.valueOf(mArticoli.size()));
mBinding.pvOrdineExport.setVisibility(mArticoli.size() > 0 ? View.VISIBLE : View.GONE); mBinding.pvOrdineExport.setVisibility(mArticoli.size() > 0 ? View.INVISIBLE : View.GONE);
mBinding.closeActivityFab.close(false);
mBinding.scanArtSpinner.setVisibility(mArticoli.size() > 0 ? View.GONE : View.VISIBLE);
}); });
}, this::handleException); }, this::handleException);
} }
@ -148,15 +191,15 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
public void exportOrdine() { public void exportOrdine() {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this); final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
PVOrdiniAcquistoRESTConsumer.saveOrdine(mOrdine , mArticoli,mGriglia,(ordine)->{ PVOrdiniAcquistoRESTConsumer.saveOrdine(mOrdine, mArticoli, mGriglia, (ordine) -> {
progress.dismiss(); progress.dismiss();
runOnUiThread(()-> { runOnUiThread(() -> {
Toast.makeText(this, "Ordine salvato con successo", Toast.LENGTH_SHORT).show(); Toast.makeText(this, "Ordine salvato con successo", Toast.LENGTH_SHORT).show();
onBackPressed(); onBackPressed();
}); });
},e-> runOnUiThread(()-> { }, e -> runOnUiThread(() -> {
progress.dismiss(); progress.dismiss();
UtilityExceptions.defaultException(this,e); UtilityExceptions.defaultException(this, e);
})); }));
} }

View File

@ -93,7 +93,7 @@ public class OrdineAcquistoArtListAdapter extends SectionedRecyclerViewAdapter<O
@Override @Override
public void onBindSubheaderViewHolder(OrdineAcquistoArtListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) { public void onBindSubheaderViewHolder(OrdineAcquistoArtListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) {
subheaderHolder.binding.title.setText(mContext.getString(R.string.ordini_a_aperti)); subheaderHolder.binding.title.setText(mContext.getString(R.string.item_list));
} }
@Override @Override

View File

@ -6,6 +6,8 @@ import android.content.Context;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.ColorDrawable;
import android.text.Editable; import android.text.Editable;
import android.text.Html;
import android.text.SpannableString;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -17,9 +19,11 @@ import it.integry.integrywmsnative.core.expansion.BaseDialog;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDialog; import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityFocus;
import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding; import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class EditArticoloDialog { public class EditArticoloDialog {
@ -32,7 +36,6 @@ public class EditArticoloDialog {
private PVEditOrderHelper mHelper; private PVEditOrderHelper mHelper;
private ArticoloOrdine mArticolo; private ArticoloOrdine mArticolo;
private ArticoloOrdine mSavedArt; private ArticoloOrdine mSavedArt;
private boolean mLockedInput = false; private boolean mLockedInput = false;
@ -41,6 +44,7 @@ public class EditArticoloDialog {
mContext = context; mContext = context;
mArticolo = articolo; mArticolo = articolo;
mHelper = new PVEditOrderHelper(context); mHelper = new PVEditOrderHelper(context);
mSavedArt = null;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_pv_edit_articolo, null, false); mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_pv_edit_articolo, null, false);
@ -51,8 +55,12 @@ public class EditArticoloDialog {
UtilityDialog.setTo90PercentSize(mContext, mDialog); UtilityDialog.setTo90PercentSize(mContext, mDialog);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
int qtaCnf = (int)Math.ceil(mArticolo.getQtaOrd() / mArticolo.getQtaCnf());
mBinding.qtaTot.setText(String.valueOf(mArticolo.getQtaOrd())); mBinding.qtaTot.setText(String.valueOf(mArticolo.getQtaOrd()));
mSavedArt = null; mBinding.qtaCnf.setText(String.valueOf(qtaCnf));
mDialog.setOnShowListener(dialog -> {
UtilityFocus.focusTextBox(mContext,mBinding.qtaTot);
});
mDialog.setOnDismissListener(dialog -> { mDialog.setOnDismissListener(dialog -> {
onDialogDismiss.run(mSavedArt); onDialogDismiss.run(mSavedArt);
@ -84,7 +92,7 @@ public class EditArticoloDialog {
@Override @Override
public void onTextChanged(CharSequence s, int start, int before, int count) { public void onTextChanged(CharSequence s, int start, int before, int count) {
setQtaCnf(s.toString().length() >0 ? Float.parseFloat(s.toString()) : 0); setQtaCnf(s.toString().length() >0 ? Integer.parseInt(s.toString()) : 0);
} }
@Override @Override
@ -93,7 +101,7 @@ public class EditArticoloDialog {
} }
}); });
} }
public void setQtaCnf(float qtaCnf){ public void setQtaCnf(int qtaCnf){
if (mLockedInput){ if (mLockedInput){
mLockedInput = false; mLockedInput = false;
}else{ }else{
@ -109,8 +117,7 @@ public class EditArticoloDialog {
mLockedInput = false; mLockedInput = false;
}else{ }else{
mLockedInput = true; mLockedInput = true;
float qtaCnf = qtaOrd / mArticolo.getQtaCnf(); mBinding.qtaCnf.setText(String.valueOf((int)Math.ceil(qtaOrd / mArticolo.getQtaCnf())));
mBinding.qtaCnf.setText(String.valueOf(qtaCnf));
} }
} }
@ -129,6 +136,8 @@ public class EditArticoloDialog {
}catch (Exception e){ }catch (Exception e){
mContext.runOnUiThread(()-> UtilityExceptions.defaultException(mContext,e)); mContext.runOnUiThread(()-> UtilityExceptions.defaultException(mContext,e));
progress.dismiss();
return;
} }
mHelper.saveArticoloToOrdine(mArticolo, ()->{ mHelper.saveArticoloToOrdine(mArticolo, ()->{
mSavedArt = mArticolo; mSavedArt = mArticolo;

View File

@ -67,4 +67,8 @@ public class PVEditOrderHelper {
public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs<Exception> onFail) { public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs<Exception> onFail) {
mArticoliOrdineRepository.saveArticoloToOrdine(articolo, onSave, onFail); mArticoliOrdineRepository.saveArticoloToOrdine(articolo, onSave, onFail);
} }
public void removeArticoloFromOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs<Exception> onError){
mArticoliOrdineRepository.deleteArticolo(articolo, onSave, onError);
}
} }

View File

@ -4,10 +4,12 @@ import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.text.Html;
import android.text.SpannableString; import android.text.SpannableString;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Toast;
import androidx.appcompat.widget.AppCompatTextView; import androidx.appcompat.widget.AppCompatTextView;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
@ -22,6 +24,7 @@ import java.util.List;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository; import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
@ -30,6 +33,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoBinding; import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoBinding;
@ -38,6 +42,7 @@ import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanLis
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity;
import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.view.dialogs.DialogAskAction;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitledFragment, IScrollableFragment { public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitledFragment, IScrollableFragment {
@ -47,6 +52,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
private Griglia mGriglia; private Griglia mGriglia;
private OrdineAcquistoPvOpenListAdapter mAdapter; private OrdineAcquistoPvOpenListAdapter mAdapter;
private List<OrdineWrapper> mRenderedOrderList = new ArrayList<>(); private List<OrdineWrapper> mRenderedOrderList = new ArrayList<>();
private boolean mRedirectToNewOrder = true;
public PVOrdiniAcquistoGrigliaFragment() { public PVOrdiniAcquistoGrigliaFragment() {
@ -119,6 +125,11 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
mBinding.ordiniAEmptyView.setVisibility(ordini == null || ordini.size() <= 0 ? View.VISIBLE : View.GONE); mBinding.ordiniAEmptyView.setVisibility(ordini == null || ordini.size() <= 0 ? View.VISIBLE : View.GONE);
refreshRenderedOrdini(ordini); refreshRenderedOrdini(ordini);
mAdapter.updateItems(mRenderedOrderList); mAdapter.updateItems(mRenderedOrderList);
if (mRenderedOrderList.size() <= 0 && mRedirectToNewOrder) {
createNewOrder();
}else{
mRedirectToNewOrder = false;
}
} }
public Griglia getGriglia() { public Griglia getGriglia() {
@ -133,11 +144,11 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
DividerItemDecoration itemDecorator = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL); DividerItemDecoration itemDecorator = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider)); itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider));
mBinding.ordiniAApertiMainList.addItemDecoration(itemDecorator); mBinding.ordiniAApertiMainList.addItemDecoration(itemDecorator);
mAdapter = new OrdineAcquistoPvOpenListAdapter(getActivity(), mRenderedOrderList, selectOrdine); mAdapter = new OrdineAcquistoPvOpenListAdapter(getActivity(), mRenderedOrderList, this::selectAction);
mBinding.ordiniAApertiMainList.setAdapter(mAdapter); mBinding.ordiniAApertiMainList.setAdapter(mAdapter);
} }
private RunnableArgs<Ordine> selectOrdine = ordine -> { private void editOrdine(Ordine ordine) {
Intent myIntent = new Intent(getActivity(), PVOrdineAcquistoEditActivity.class); Intent myIntent = new Intent(getActivity(), PVOrdineAcquistoEditActivity.class);
@ -146,18 +157,50 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
getActivity().startActivity(myIntent); getActivity().startActivity(myIntent);
}; }
private void selectAction(Ordine ordine) {
getActivity().runOnUiThread(() -> DialogAskAction.make(getActivity(),
Html.fromHtml(String.format(this.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdineId()), UtilityDate.formatDate(ordine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))).toString(),
ordine.getCountArticoli() + " articoli",
() -> this.editOrdine(ordine),
() -> this.deleteOrdine(ordine)).show());
}
private void deleteOrdine(Ordine ordine) {
String text = "Stai per eliminare un ordine sei sicuro?";
DialogSimpleMessageHelper.makeWarningDialog(getActivity(), new SpannableString(Html.fromHtml(text)), null, () -> getActivity().runOnUiThread(() -> {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity());
mHelper.deleteOrder(ordine, () -> {
getActivity().runOnUiThread(() -> {
progress.dismiss();
Toast.makeText(getActivity(), "Ordine eliminato!", Toast.LENGTH_SHORT);
fetchOrders();
});
}, e -> {
progress.dismiss();
getActivity().runOnUiThread(() -> UtilityExceptions.defaultException(getActivity(), e));
});
}), () -> {
}).show();
}
private void refreshRenderedOrdini(List<OrdineWrapper> ordini) { private void refreshRenderedOrdini(List<OrdineWrapper> ordini) {
mRenderedOrderList.clear(); mRenderedOrderList.clear();
if (ordini != null) mRenderedOrderList.addAll(ordini); mRenderedOrderList.addAll(ordini);
} }
public void createNewOrder() { public void createNewOrder() {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity(), getString(R.string.ordini_a_aperti_progress)); final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity(), getString(R.string.ordini_a_aperti_progress));
mHelper.createNewOrder(mGriglia, order -> { mHelper.createNewOrder(mGriglia, order -> {
progress.dismiss(); progress.dismiss();
getActivity().runOnUiThread(()-> selectOrdine.run(order)); getActivity().runOnUiThread(() -> editOrdine(order));
}, e -> getActivity().runOnUiThread(() -> UtilityExceptions.defaultException(getActivity(), e, progress))); }, e -> getActivity().runOnUiThread(() -> UtilityExceptions.defaultException(getActivity(), e, progress)));
} }
@ -175,7 +218,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
if (mGriglia != null){ if (mGriglia != null) {
fetchOrders(); fetchOrders();
} }
} }

View File

@ -28,7 +28,7 @@ public class OrdineAcquistoPvOpenListAdapter extends SectionedRecyclerViewAdapte
private Context mContext; private Context mContext;
private List<OrdineWrapper> mDataset; private List<OrdineWrapper> mDataset;
RunnableArgs<Ordine> mOnItemSelect; private RunnableArgs<Ordine> mOnItemSelect;
static class SubheaderHolder extends RecyclerView.ViewHolder { static class SubheaderHolder extends RecyclerView.ViewHolder {
@ -70,7 +70,7 @@ public class OrdineAcquistoPvOpenListAdapter extends SectionedRecyclerViewAdapte
private List<OrdineWrapper> orderItems(List<OrdineWrapper> dataset) { private List<OrdineWrapper> orderItems(List<OrdineWrapper> dataset) {
return Stream.of(dataset) return Stream.of(dataset)
.distinctBy(OrdineWrapper::getOrdine) .distinctBy(OrdineWrapper::getOrdine)
.sortBy(x -> UtilityDate.formatDate(x.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)) .sortBy(x -> x.getOrdine().getOrdineId())
.toList(); .toList();
} }
@ -103,13 +103,11 @@ public class OrdineAcquistoPvOpenListAdapter extends SectionedRecyclerViewAdapte
String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdineId()), UtilityDate.formatDate(ordine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdineId()), UtilityDate.formatDate(ordine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
holder.binding.numArts.setText(String.format(mContext.getString(R.string.ord_acq_num_articoli), String.valueOf(ordineWrapper.getCountArticoli()))); holder.binding.numArts.setText(Html.fromHtml(String.format(mContext.getString(R.string.ord_acq_num_articoli), String.valueOf(ordineWrapper.getCountArticoli()))));
holder.binding.orderIdentifier.setText(Html.fromHtml(testataOrdString)); holder.binding.orderIdentifier.setText(Html.fromHtml(testataOrdString));
holder.binding.getRoot().setOnClickListener(v -> { holder.binding.getRoot().setOnClickListener(v -> mOnItemSelect.run(ordine));
mOnItemSelect.run(ordine);
});
} }

View File

@ -82,7 +82,7 @@ public class DialogScanLisA {
}); });
}; };
RunnableArgs<Griglia> onGrigliaAvaialable = griglia->{ RunnableArgs<Griglia> onGrigliaAvailable = griglia->{
mContext.runOnUiThread(()->{ mContext.runOnUiThread(()->{
progressDialog.dismiss(); progressDialog.dismiss();
mGriglia = griglia; mGriglia = griglia;
@ -95,13 +95,9 @@ public class DialogScanLisA {
repository.findByCodAlis(data.getStringValue(),griglia->{ repository.findByCodAlis(data.getStringValue(),griglia->{
if (griglia != null){ if (griglia != null){
griglia.getGriglia().setCountArticoli(griglia.getCountArticoli()); griglia.getGriglia().setCountArticoli(griglia.getCountArticoli());
if (griglia.getCountArticoli() >0){ mHelper.updateGriglia(griglia.getGriglia(), onGrigliaAvailable,mOnError);
onGrigliaAvaialable.run(griglia.getGriglia());
}else{
mHelper.updateGriglia(griglia.getGriglia(), onGrigliaAvaialable,mOnError);
}
}else{ }else{
mHelper.downloadAndSaveLisA(data.getStringValue(), onGrigliaAvaialable,mOnError); mHelper.downloadAndSaveLisA(data.getStringValue(), onGrigliaAvailable,mOnError);
} }
},mOnError); },mOnError);

View File

@ -10,6 +10,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliGrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliGrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository; 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.ArticoloDTO;
@ -21,11 +22,14 @@ public class OrdineAcquistoPvHelper {
private Context mContext; private Context mContext;
private GrigliaRepository mGrigliaRepository; private GrigliaRepository mGrigliaRepository;
private ArticoliGrigliaRepository mArticoliGrigliaRepository; private ArticoliGrigliaRepository mArticoliGrigliaRepository;
private ArticoliOrdineRepository mArticoliOrdineRepository;
private OrdineRepository mOrdineRepository; private OrdineRepository mOrdineRepository;
public OrdineAcquistoPvHelper(Context mContext) { public OrdineAcquistoPvHelper(Context mContext) {
this.mContext = mContext; this.mContext = mContext;
this.mGrigliaRepository = new GrigliaRepository(); this.mGrigliaRepository = new GrigliaRepository();
this.mArticoliGrigliaRepository = new ArticoliGrigliaRepository(); this.mArticoliGrigliaRepository = new ArticoliGrigliaRepository();
this.mArticoliOrdineRepository = new ArticoliOrdineRepository();
this.mOrdineRepository = new OrdineRepository(); this.mOrdineRepository = new OrdineRepository();
} }
@ -67,9 +71,13 @@ public class OrdineAcquistoPvHelper {
Ordine ordine = new Ordine(); Ordine ordine = new Ordine();
ordine.setDataIns(new Date()); ordine.setDataIns(new Date());
ordine.setIdGriglia(griglia.getGrigliaId()); ordine.setIdGriglia(griglia.getGrigliaId());
mOrdineRepository.insert(ordine,id->{ mOrdineRepository.insert(ordine, id -> {
ordine.setOrdineId(id); ordine.setOrdineId(id);
onSuccess.run(ordine); onSuccess.run(ordine);
},onError); }, onError);
}
public void deleteOrder(Ordine ordine, Runnable onSuccess, RunnableArgs<Exception> onFail) {
mOrdineRepository.delete(ordine, onSuccess, onFail);
} }
} }

View File

@ -12,7 +12,6 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.MultiAutoCompleteTextView; import android.widget.MultiAutoCompleteTextView;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
@ -131,7 +130,7 @@ public class DialogVenditaFiltroAvanzato {
} }
private void initView(DialogVenditaFiltroAvanzatoBinding bindings, DialogVenditaFiltroAvanzatoViewModel viewModel) { private void initView(DialogVenditaFiltroAvanzatoBinding bindings, DialogVenditaFiltroAvanzatoViewModel viewModel) {
IFiltroOrdiniVendita filtroOrdiniVendita = ClassRouter.getIstance(ClassRouter.PATH.FILTRO_ORDINI_VENDITA); IFiltroOrdiniVendita filtroOrdiniVendita = ClassRouter.getInstance(ClassRouter.PATH.FILTRO_ORDINI_VENDITA);
// bindings.filledExposedDropdownDataCons.setOnFocusChangeListener((v, hasFocus) -> { // bindings.filledExposedDropdownDataCons.setOnFocusChangeListener((v, hasFocus) -> {
// bindings.filledExposedDropdownDataCons.callOnClick(); // bindings.filledExposedDropdownDataCons.callOnClick();

View File

@ -100,7 +100,7 @@ public class VenditaOrdineInevasoHelper {
public List<VenditaOrdineInevasoListViewModel> getListViewModelPerPosizione(List<List<PickingObjectDTO>> groupedRighe, List<MtbColr> mtbColrs) { public List<VenditaOrdineInevasoListViewModel> getListViewModelPerPosizione(List<List<PickingObjectDTO>> groupedRighe, List<MtbColr> mtbColrs) {
ICustomConfiguration customConfiguration = ClassRouter.getIstance(ClassRouter.PATH.CUSTOM_CONFIGURATION); ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
List<VenditaOrdineInevasoListViewModel> listModel = new ArrayList<>(); List<VenditaOrdineInevasoListViewModel> listModel = new ArrayList<>();

View File

@ -1,7 +1,7 @@
package it.integry.integrywmsnative.gest.vendita_ordine_inevaso.viewmodel; package it.integry.integrywmsnative.gest.vendita_ordine_inevaso.viewmodel;
import android.app.Dialog; import android.app.Dialog;
import android.app.ProgressDialog;
import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableField; import androidx.databinding.ObservableField;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
@ -921,7 +921,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone(); MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone();
IOrdiniVendita ordiniVendita = ClassRouter.getIstance(ClassRouter.PATH.ORDINI_VENDITA); IOrdiniVendita ordiniVendita = ClassRouter.getInstance(ClassRouter.PATH.ORDINI_VENDITA);
ordiniVendita.distribuisciCollo(progress, cloneMtbColt, mTestateOrdini, mtbColts -> { ordiniVendita.distribuisciCollo(progress, cloneMtbColt, mTestateOrdini, mtbColts -> {

View File

@ -0,0 +1,44 @@
package it.integry.integrywmsnative.ui;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.view.animation.OvershootInterpolator;
import com.github.clans.fab.FloatingActionMenu;
public class FabMenuCustomAnimations {
public static void changeIconOnFocus(FloatingActionMenu fabMenu, int iconOpen, int iconClose) {
AnimatorSet set = new AnimatorSet();
ObjectAnimator scaleOutX = ObjectAnimator.ofFloat(fabMenu.getMenuIconView(), "scaleX", 1.0f, 0.2f);
ObjectAnimator scaleOutY = ObjectAnimator.ofFloat(fabMenu.getMenuIconView(), "scaleY", 1.0f, 0.2f);
ObjectAnimator scaleInX = ObjectAnimator.ofFloat(fabMenu.getMenuIconView(), "scaleX", 0.2f, 1.0f);
ObjectAnimator scaleInY = ObjectAnimator.ofFloat(fabMenu.getMenuIconView(), "scaleY", 0.2f, 1.0f);
scaleOutX.setDuration(50);
scaleOutY.setDuration(50);
scaleInX.setDuration(150);
scaleInY.setDuration(150);
scaleInX.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
fabMenu.getMenuIconView().setImageResource(fabMenu.isOpened() ? iconOpen:iconClose);
}
});
set.play(scaleOutX).with(scaleOutY);
set.play(scaleInX).with(scaleInY).after(scaleOutX);
set.setInterpolator(new OvershootInterpolator(2));
fabMenu.setIconToggleAnimatorSet(set);
}
public static void changeIconOnFocus(FloatingActionMenu fabMenu, int iconOpen) {
changeIconOnFocus(fabMenu,iconOpen,iconOpen);
}
}

View File

@ -0,0 +1,58 @@
package it.integry.integrywmsnative.view.dialogs;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import androidx.databinding.DataBindingUtil;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialog;
import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.databinding.DialogAskActionEditDeleteBinding;
public class DialogAskAction {
private Activity mContext;
private Dialog mDialog;
private Runnable mOnEditSelected;
private Runnable mOnDeleteSelected;
private DialogAskAction(Activity context,String title, String subTitle, Runnable onEditSelected, Runnable onDeleteSelected) {
mContext = context;
mOnEditSelected = onEditSelected;
mOnDeleteSelected = onDeleteSelected;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
DialogAskActionEditDeleteBinding mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_ask_action_edit_delete, null, false);
mBinding.setViewmodel(this);
mDialog = new BaseDialog(context);
mDialog.setContentView(mBinding.getRoot());
UtilityDialog.setTo90PercentSize(mContext, mDialog);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mBinding.bottomSheetActionsTitle.setText(title);
mBinding.bottomSheetActionsSubtitle.setText(subTitle);
}
public static Dialog make(Activity context, String title, String subtitle, Runnable onEdit, Runnable onDelete) {
return new DialogAskAction(context, title,subtitle,onEdit,onDelete).mDialog;
}
public void onEdit(){
mDialog.dismiss();
mOnEditSelected.run();
}
public void onDelete(){
mDialog.dismiss();
mOnDeleteSelected.run();
}
}

View File

@ -0,0 +1,255 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:fab="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View" />
<variable
name="viewModel"
type="it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity" />
</data>
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/full_white"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/full_white"
android:orientation="vertical"
android:paddingTop="8dp"
tools:context=".gest.contenuto_bancale.ContenutoBancaleActivity">
<it.integry.integrywmsnative.ui.ElevatedToolbar
android:id="@+id/elevated_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="modifica ordine"
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
android:layout_gravity="start" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/toolbar_tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="modifica ordine"
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
android:layout_gravity="end" />
</androidx.appcompat.widget.Toolbar>
</it.integry.integrywmsnative.ui.ElevatedToolbar>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:background="@drawable/gray_detail_background_round8"
android:orientation="vertical"
android:padding="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ordine: "
android:textColor="@android:color/black"
android:textSize="16sp" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/order_identifier"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textSize="16sp"
android:textStyle="bold"
tools:text="22 ottobre 2018" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Griglia "
android:textColor="@android:color/black" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/cod_alis"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textStyle="italic"
tools:text="4SECCO" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="N. articoli "
android:textColor="@android:color/black" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/count_art_ord"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textStyle="bold"
tools:text="10" />
</LinearLayout>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/articoli_ordine_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="92dp"
android:paddingStart="2dp"
android:paddingEnd="2dp" />
<LinearLayout
android:id="@+id/scan_art_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp"
android:visibility="visible"
android:orientation="horizontal">
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:layout_marginStart="8dp"
android:layout_marginEnd="12dp"
android:layout_gravity="center_vertical"
android:gravity="center_horizontal"
style="@style/AppTheme.NewMaterial.Text"
android:text="@string/scan_item"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<com.github.clans.fab.FloatingActionMenu
android:id="@+id/close_activity_fab"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_anchor="@+id/linearLayout2"
app:layout_anchorGravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:menu_icon="@drawable/ic_check_white_24dp"
fab:menu_animationDelayPerItem="50"
fab:menu_backgroundColor="@color/white_bg_alpha"
fab:menu_buttonSpacing="0dp"
fab:menu_colorNormal="@color/success_color"
fab:menu_colorPressed="@color/green_400"
fab:menu_labels_colorNormal="@color/white"
fab:menu_labels_colorPressed="@color/white_pressed"
fab:menu_labels_colorRipple="#66FFFFFF"
fab:menu_labels_cornerRadius="3dp"
fab:menu_labels_hideAnimation="@anim/fab_slide_out_to_right"
fab:menu_labels_margin="0dp"
fab:menu_labels_padding="8dp"
fab:menu_labels_paddingBottom="4dp"
fab:menu_labels_paddingLeft="8dp"
fab:menu_labels_paddingRight="8dp"
fab:menu_labels_paddingTop="4dp"
fab:menu_labels_position="left"
fab:menu_labels_showAnimation="@anim/fab_slide_in_from_right"
fab:menu_labels_showShadow="true"
fab:menu_labels_textColor="@color/black_semi_transparent"
fab:menu_labels_textSize="18sp"
fab:menu_openDirection="up"
fab:menu_shadowColor="#66000000"
fab:menu_shadowRadius="4dp"
fab:menu_shadowXOffset="1dp"
fab:menu_shadowYOffset="3dp"
fab:menu_showShadow="true">
<com.github.clans.fab.FloatingActionButton
android:id="@+id/pv_ordine_export"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_black_upload"
android:visibility="gone"
app:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/white_pressed"
app:fab_colorRipple="#66FFFFFF"
app:onClick="@{() -> viewModel.exportOrdine()}"
fab:fab_label="@string/close_and_export" />
<com.github.clans.fab.FloatingActionButton
android:id="@+id/pv_ordine_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_check_black_24dp"
android:visibility="visible"
app:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/white_pressed"
app:fab_colorRipple="#66FFFFFF"
app:onClick="@{() -> viewModel.closeEdit()}"
fab:fab_label="@string/close_and_exit" />
</com.github.clans.fab.FloatingActionMenu>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout>

View File

@ -1,202 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:fab="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View" />
<variable
name="viewModel"
type="it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity" />
</data>
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/full_white">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="8dp"
android:background="@color/full_white"
tools:context=".gest.contenuto_bancale.ContenutoBancaleActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/gray_detail_background_round8"
android:orientation="vertical"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:padding="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ordine: "
android:textColor="@android:color/black"
android:textSize="16sp"
style="@style/AppTheme.NewMaterial.Text.Small" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/order_identifier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="22 ottobre 2018"
android:textColor="@android:color/black"
android:textSize="16sp"
android:textStyle="bold"
style="@style/AppTheme.NewMaterial.Text.Small" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Griglia "
android:textColor="@android:color/black"
style="@style/AppTheme.NewMaterial.Text.Small" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/cod_alis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="4SECCO"
android:textColor="@android:color/black"
android:textStyle="italic"
style="@style/AppTheme.NewMaterial.Text.Small" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="12dp">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="N. articoli "
android:textColor="@android:color/black"
style="@style/AppTheme.NewMaterial.Text.Small" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/count_art_ord"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="10"
android:textColor="@android:color/black"
android:textStyle="bold"
style="@style/AppTheme.NewMaterial.Text.Small" />
</LinearLayout>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/articoli_ordine_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="92dp"
android:paddingStart="2dp"
android:paddingEnd="2dp"/>
</LinearLayout>
</LinearLayout>
<com.github.clans.fab.FloatingActionMenu
android:id="@+id/close_activity_fab"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
fab:menu_animationDelayPerItem="50"
fab:menu_backgroundColor="@color/white_bg_alpha"
fab:menu_buttonSpacing="0dp"
fab:menu_colorNormal="@color/success_color"
fab:menu_colorPressed="@color/green_400"
fab:menu_fab_size="normal"
fab:menu_labels_colorNormal="@color/white"
fab:menu_labels_colorPressed="@color/white_pressed"
fab:menu_labels_colorRipple="#66FFFFFF"
fab:menu_labels_cornerRadius="3dp"
fab:menu_labels_hideAnimation="@anim/fab_slide_out_to_right"
fab:menu_labels_margin="0dp"
fab:menu_labels_padding="8dp"
fab:menu_labels_paddingBottom="4dp"
fab:menu_labels_paddingLeft="8dp"
fab:menu_labels_paddingRight="8dp"
fab:menu_labels_paddingTop="4dp"
fab:menu_labels_position="left"
fab:menu_labels_showAnimation="@anim/fab_slide_in_from_right"
fab:menu_labels_showShadow="true"
fab:menu_labels_textColor="@color/black_semi_transparent"
fab:menu_labels_textSize="18sp"
app:fab_showAnimation="@anim/fab_scale_up"
app:fab_hideAnimation="@anim/fab_scale_down"
fab:menu_openDirection="up"
fab:menu_shadowColor="#66000000"
fab:menu_shadowRadius="4dp"
fab:menu_shadowXOffset="1dp"
fab:menu_shadowYOffset="3dp"
fab:menu_showShadow="true"
app:menu_icon="@drawable/ic_check_white_24dp"
>
<com.github.clans.fab.FloatingActionButton
android:id="@+id/pv_ordine_export"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_black_upload"
android:visibility="gone"
app:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/white_pressed"
app:fab_colorRipple="#66FFFFFF"
app:onClick="@{() -> viewModel.exportOrdine()}"
fab:fab_label="@string/close_and_export"
/>
<com.github.clans.fab.FloatingActionButton
android:id="@+id/pv_ordine_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_check_black_24dp"
android:visibility="visible"
app:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/white_pressed"
app:fab_colorRipple="#66FFFFFF"
app:onClick="@{() -> viewModel.closeEdit()}"
fab:fab_label="@string/close_and_exit"
android:scaleX="-1" />
</com.github.clans.fab.FloatingActionMenu>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout>

View File

@ -0,0 +1,169 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="viewmodel"
type="it.integry.integrywmsnative.view.dialogs.DialogAskAction" />
</data>
<androidx.cardview.widget.CardView
android:id="@+id/base_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="vertical"
app:cardCornerRadius="12dp"
app:cardElevation="0dp">
<LinearLayout
android:id="@+id/bottom_sheet_actions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#fff"
android:orientation="vertical"
android:padding="16dp"
app:behavior_hideable="true"
app:behavior_peekHeight="0dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
<RelativeLayout
android:id="@+id/dialog_actions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/dialog_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:ellipsize="end"
android:text="@string/choose_action"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:gravity="center"
android:textColor="@android:color/primary_text_light"
android:textSize="18sp"
android:textStyle="bold"/>
</RelativeLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center_vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/bottom_sheet_actions_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:paddingEnd="8dp"
android:paddingStart="0dp"
android:textColor="#444"
android:textSize="18sp"
android:textStyle="bold"
tools:text="Title" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/bottom_sheet_actions_subtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textStyle="bold"
tools:text="subtitle" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.50" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
app:layout_constraintEnd_toStartOf="@id/guideline_action"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatImageButton
android:id="@+id/bottom_sheet_actions_edit_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:padding="16dp"
android:scaleX="1.5"
android:scaleY="1.5"
android:src="@drawable/ic_edit_24dp"
android:onClick="@{()->viewmodel.onEdit()}"
android:tint="@color/green_600" />
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/edit" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/guideline_action"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatImageButton
android:id="@+id/bottom_sheet_actions_delete_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:padding="16dp"
android:scaleX="1.5"
android:scaleY="1.5"
android:src="@drawable/ic_delete_24dp"
android:onClick="@{()->viewmodel.onDelete()}"
android:tint="@color/red_600" />
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/delete" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
</layout>

View File

@ -1,18 +1,20 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<data> <data>
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" /> <import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<import type="android.view.View" />
<variable <variable
name="viewmodel" name="viewmodel"
type="it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog" /> type="it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog" />
</data> </data>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" <androidx.cardview.widget.CardView
android:id="@+id/base_root" android:id="@+id/base_root"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -40,12 +42,31 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:paddingLeft="24dp" android:padding="24dp">
android:paddingTop="24dp"
android:paddingRight="24dp">
<RelativeLayout <RelativeLayout
android:id="@+id/dialog_title" android:id="@+id/dialog_actions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/dialog_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:ellipsize="end"
android:text="@string/insert_qty"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:gravity="center"
android:textColor="@android:color/primary_text_light"
android:textSize="18sp"
android:textStyle="bold"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/dialog_info"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
@ -53,10 +74,10 @@
android:id="@+id/cod_mart" android:id="@+id/cod_mart"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@color/colorPrimary"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:ellipsize="end" android:ellipsize="end"
android:text="@{viewmodel.articolo.codMart}" android:text="@{viewmodel.articolo.codMart}"
android:textColor="@color/colorPrimary"
android:textSize="18sp" android:textSize="18sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="codMart" /> tools:text="codMart" />
@ -68,26 +89,33 @@
android:layout_below="@id/cod_mart" android:layout_below="@id/cod_mart"
android:ellipsize="end" android:ellipsize="end"
android:text="@{viewmodel.articolo.descrizione}" android:text="@{viewmodel.articolo.descrizione}"
android:textColor="@color/red_600"
android:textSize="16sp" android:textSize="16sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="DESCR ART" /> tools:text="DESCR ART" />
</RelativeLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentEnd="true" android:text="Unità di misura: "
android:paddingLeft="8dp" android:textSize="16sp" />
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="4dp"
android:text="@{viewmodel.articolo.untMis}" android:text="@{viewmodel.articolo.untMis}"
android:textColor="#000" android:textSize="16sp"
android:textSize="18sp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintRight_toRightOf="parent"
tools:text="(UM)" /> tools:text="(UM)" />
</LinearLayout>
</RelativeLayout>
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -167,7 +195,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="@string/packages" android:hint="@string/packages"
android:inputType="numberDecimal" android:inputType="number"
android:selectAllOnFocus="true" /> android:selectAllOnFocus="true" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -219,12 +247,12 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/center_guideline" app:layout_constraintEnd_toStartOf="@id/center_guideline"
android:onClick="@{()->viewmodel.cancel()}" android:onClick="@{()->viewmodel.cancel()}"
app:icon="@drawable/ic_clear_24dp"
app:strokeColor="@color/colorPrimary" app:strokeColor="@color/colorPrimary"
android:text="@string/no"/> android:text="@string/abort"/>
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/add_button"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/Button.PrimaryFull" style="@style/Button.PrimaryFull"
@ -233,9 +261,9 @@
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="@id/center_guideline" app:layout_constraintStart_toStartOf="@id/center_guideline"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:icon="@drawable/ic_add_24dp" android:focusable="true"
android:onClick="@{()->viewmodel.saveAndExit()}" android:onClick="@{()->viewmodel.saveAndExit()}"
android:text="@string/yes"/> android:text="@string/add"/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -30,6 +30,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical"
android:descendantFocusability="blocksDescendants"
android:paddingTop="8dp"> android:paddingTop="8dp">
<LinearLayout <LinearLayout
@ -138,13 +139,13 @@
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
> >
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/ordini_a_aperti_main_list" android:id="@+id/ordini_a_aperti_main_list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginBottom="92dp"
android:background="@color/full_white" android:background="@color/full_white"
android:paddingStart="2dp" android:paddingStart="2dp"
android:paddingEnd="2dp"/> android:paddingEnd="2dp"/>

View File

@ -283,4 +283,11 @@
<string name="add">Aggiungi</string> <string name="add">Aggiungi</string>
<string name="close_and_export">Chiudi ed esporta ordine</string> <string name="close_and_export">Chiudi ed esporta ordine</string>
<string name="close_and_exit">Chiudi ordine</string> <string name="close_and_exit">Chiudi ordine</string>
<string name="scan_art_barcode_to_add">Scansiona il codice di un articolo per aggiungerlo all\' ordine</string>
<string name="edit_order">Modifica ordine</string>
<string name="item_list">Lista articoli</string>
<string name="insert_qty">Inserisci quantità</string>
<string name="choose_action">Seleziona una azione</string>
<string name="delete">Elimina</string>
<string name="edit">Modifica</string>
</resources> </resources>

View File

@ -288,4 +288,11 @@
<string name="add">Add</string> <string name="add">Add</string>
<string name="close_and_export">Close and export</string> <string name="close_and_export">Close and export</string>
<string name="close_and_exit">Close order</string> <string name="close_and_exit">Close order</string>
<string name="scan_art_barcode_to_add">Scan an item barcode to add it to the order</string>
<string name="edit_order">Edit order</string>
<string name="item_list">Items list</string>
<string name="insert_qty">Insert Quantity</string>
<string name="choose_action">Choose action</string>
<string name="delete">Delete</string>
<string name="edit">Edit</string>
</resources> </resources>

View File

@ -156,4 +156,5 @@
</resources> </resources>

View File

@ -2,3 +2,4 @@ call build_azienda.bat _base
call build_azienda.bat vgalimenti call build_azienda.bat vgalimenti
call build_azienda.bat ime call build_azienda.bat ime
call build_azienda.bat frudis call build_azienda.bat frudis
call build_azienda.bat saporiveri_pv

View File

@ -7,6 +7,7 @@ public class CustomConfiguration extends BaseCustomConfiguration implements ICus
public CustomConfiguration() { public CustomConfiguration() {
configurations.put(Keys.MENU_CONFIGURATION, new MenuConfigurationSAPORIVERIPV()); configurations.put(Keys.MENU_CONFIGURATION, new MenuConfigurationSAPORIVERIPV());
configurations.put(Keys.CUSTOM_DYNAMIC_VERSION_PATH,"_pv");
} }
} }