diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml new file mode 100644 index 00000000..adb28554 --- /dev/null +++ b/.idea/assetWizardSettings.xml @@ -0,0 +1,46 @@ + + + + + + \ No newline at end of file diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 244084b5..13f3b93a 100644 Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ diff --git a/app/build.gradle b/app/build.gradle index 4b9836b0..0bb09def 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,8 +17,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 23 - def appVersionName = '1.0.20' + def appVersionCode = 24 + def appVersionName = '1.0.21' signingConfigs { release { diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java index 58830068..1ff3cada 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java @@ -1,6 +1,8 @@ package it.integry.integrywmsnative; import android.content.Intent; + +import androidx.annotation.IdRes; import androidx.databinding.DataBindingUtil; import android.os.Bundle; import androidx.fragment.app.Fragment; @@ -21,8 +23,8 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.fragment.app.FragmentTransaction; import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker; -import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.interfaces.IFilterableFragment; import it.integry.integrywmsnative.core.interfaces.IRecyclerFragment; import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment; @@ -34,6 +36,7 @@ import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.gest.login.LoginActivity; import it.integry.integrywmsnative.gest.main.MainFragment; +import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment; import it.integry.integrywmsnative.gest.settings.MainSettingsFragment; import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment; @@ -71,7 +74,7 @@ public class MainActivity extends AppCompatActivity mBinding.navView.setNavigationItemSelectedListener(this); mBinding.appBarMain.mainSearch.setVisibility(View.GONE); - changeContentFragment(MainFragment.newInstance()); + popToMain(); init(); } @@ -91,10 +94,17 @@ public class MainActivity extends AppCompatActivity if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { - super.onBackPressed(); + int count = getSupportFragmentManager().getBackStackEntryCount(); + + if (count == 0) { + super.onBackPressed(); + } else { + getSupportFragmentManager().popBackStack(); + } } } + @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. @@ -102,19 +112,11 @@ public class MainActivity extends AppCompatActivity return true; } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle action bar item clicks here. The action bar will - // automatically handle clicks on the Home/Up button, so long - // as you specify a parent activity in AndroidManifest.xml. - int id = item.getItemId(); + public void setItem(@IdRes int menuId) { + mBinding.navView.setCheckedItem(menuId); + onNavigationItemSelected(mBinding.navView.getMenu().findItem(menuId)); - //noinspection SimplifiableIfStatement -// if (id == R.id.action_search) { -// return true; -// } - return super.onOptionsItemSelected(item); } @SuppressWarnings("StatementWithEmptyBody") @@ -128,25 +130,24 @@ public class MainActivity extends AppCompatActivity Fragment fragment = null; int id = item.getItemId(); - if (id == R.id.nav_accettazione) { + if (id == R.id.nav_home) { + this.popToMain(); + } else if (id == R.id.nav_accettazione) { fragment = MainAccettazioneFragment.newInstance(); this.adaptViewToFragment(fragment); - } else if (id == R.id.nav_gallery) { + } else if (id == R.id.nav_spedizione) { fragment = MainVenditaFragment.newInstance(); this.adaptViewToFragment(fragment); - } else if (id == R.id.nav_slideshow) { + } else if (id == R.id.nav_rettifica_giacenze) { fragment = RettificaGiacenzeFragment.newInstance(); this.adaptViewToFragment(fragment); - } else if (id == R.id.nav_manage) { + } else if (id == R.id.nav_versamento_merce) { fragment = VersamentoMerceFragment.newInstance(); this.adaptViewToFragment(fragment); + } else if (id == R.id.nav_free_picking) { + fragment = PickingLiberoFragment.newInstance(); + this.adaptViewToFragment(fragment); } - /*else if (id == R.id.nav_share) { - - } else if (id == R.id.nav_send) { - - }*/ - else if(id == R.id.nav_settings){ fragment = new MainSettingsFragment(); @@ -158,7 +159,7 @@ public class MainActivity extends AppCompatActivity startLoginActivity(); } - changeContentFragment(fragment); + changeContentFragment(fragment, true); DrawerLayout drawer = findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); @@ -170,7 +171,7 @@ public class MainActivity extends AppCompatActivity adaptViewToFragment(mainFragment); - changeContentFragment(mainFragment); + changeContentFragment(mainFragment, false); } private void adaptViewToFragment(Fragment fragment){ @@ -184,7 +185,7 @@ public class MainActivity extends AppCompatActivity if(fragment instanceof ITitledFragment) { - getSupportActionBar().setTitle(((ITitledFragment) fragment).getTitle(this)); + ((ITitledFragment) fragment).onCreateActionBar(getSupportActionBar(), this); } else { getSupportActionBar().setTitle(R.string.app_name); } @@ -210,11 +211,16 @@ public class MainActivity extends AppCompatActivity } } - private void changeContentFragment(Fragment fragment){ + private void changeContentFragment(Fragment fragment, boolean addToBackStack){ if (fragment != null) { FragmentManager fragmentManager = getSupportFragmentManager(); - fragmentManager.beginTransaction() - .replace(R.id.frame_container, fragment).commit(); + FragmentTransaction ft = fragmentManager + .beginTransaction() + .replace(R.id.frame_container, fragment); + + if(addToBackStack) ft.addToBackStack(fragment.getTag()); + + ft.commit(); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java index e78dc715..fb6ce904 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java @@ -134,16 +134,9 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{ mtbColtToCreate.setSerCollo(customSerCollo); } - Calendar calendar = Calendar.getInstance(); - int currentYear = calendar.get(Calendar.YEAR); - - - String fullYear = "20" + UtilityBarcode.getAnnoColloFromULAnonima(barcode); - - - - if(!fullYear.equalsIgnoreCase("" + currentYear)){ + if(!UtilityBarcode.isEtichettaAnonimaOfCurrentYear(barcode)) { onFailed.run(new Exception("Per continuare scansiona un'etichetta dell'anno corrente")); + return; } mtbColtToCreate diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/PrinterRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/PrinterRESTConsumer.java index 0e15e052..e2282f7c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/PrinterRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/PrinterRESTConsumer.java @@ -9,6 +9,8 @@ import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.utility.UtilityLogger; +import it.integry.integrywmsnative.core.utility.UtilityServer; +import it.integry.integrywmsnative.core.utility.UtilityString; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @@ -88,6 +90,11 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { public static void printCollo(String printerName, MtbColt testataColloToPrint, int quantity, String reportName, Runnable onComplete, RunnableArgs onFailed) { + if(UtilityString.isNullOrEmpty(printerName)) { + onFailed.run(new Exception("Nessuna stampante configurata: valore null")); + return; + } + PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); printerService.printCollo( printerName, diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/binders/ExpandableLayoutBinders.java b/app/src/main/java/it/integry/integrywmsnative/core/di/binders/ExpandableLayoutBinders.java index 6bf97479..be166fae 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/di/binders/ExpandableLayoutBinders.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/di/binders/ExpandableLayoutBinders.java @@ -19,12 +19,9 @@ public class ExpandableLayoutBinders { view.setOnExpansionUpdateListener(null); } - ExpandableLayout.OnExpansionUpdateListener watcher = new ExpandableLayout.OnExpansionUpdateListener() { - @Override - public void onExpansionUpdate(float expansionFraction, int state) { - if(view.isExpanded() == bindableBoolean.get()) return; - bindableBoolean.set(state == 1); - } + ExpandableLayout.OnExpansionUpdateListener watcher = (expansionFraction, state) -> { + if(view.isExpanded() == bindableBoolean.get()) return; + bindableBoolean.set(state == 1); }; view.setTag(R.id.bound_observable, new Pair<>(bindableBoolean, watcher)); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ITitledFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ITitledFragment.java index 4acc415b..716c682f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ITitledFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ITitledFragment.java @@ -2,12 +2,14 @@ package it.integry.integrywmsnative.core.interfaces; import android.content.Context; +import androidx.appcompat.app.ActionBar; + /** * Created by GiuseppeS on 07/03/2018. */ public interface ITitledFragment { - String getTitle(Context context); + void onCreateActionBar(ActionBar actionBar, Context context); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java index 530d544d..75ec4e7a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java @@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.utility; import com.annimon.stream.Stream; +import java.util.Calendar; + import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO; @@ -13,6 +15,14 @@ public class UtilityBarcode { return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.CODE128 && barcodeScanDTO.getStringValue().startsWith("U"); } + public static boolean isEtichettaAnonimaOfCurrentYear(String barcode) { + Calendar calendar = Calendar.getInstance(); + int currentYear = calendar.get(Calendar.YEAR); + + String fullYear = "20" + UtilityBarcode.getAnnoColloFromULAnonima(barcode); + return fullYear.equalsIgnoreCase("" + currentYear); + } + public static boolean isEtichetta128(BarcodeScanDTO barcodeScanDTO){ return barcodeScanDTO != null && (barcodeScanDTO.getType() == BarcodeType.CODE128 || barcodeScanDTO.getType() == BarcodeType.EAN128); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java index 70d6e73e..b1026973 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java @@ -19,6 +19,11 @@ public class UtilityExceptions { progressDialog.dismiss(); defaultException(context, ex); } + + public static void defaultException(Context context, Exception ex, ProgressDialog progressDialog, boolean sendMail){ + progressDialog.dismiss(); + defaultException(context, ex, sendMail); + } public static void defaultException(Context context, Exception ex){ defaultException(context, ex, false); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/wifi/WiFiCheckerViewHolder.java b/app/src/main/java/it/integry/integrywmsnative/core/wifi/WiFiCheckerViewHolder.java index 9e258c6a..f65b8854 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/wifi/WiFiCheckerViewHolder.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/wifi/WiFiCheckerViewHolder.java @@ -33,19 +33,19 @@ public class WiFiCheckerViewHolder implements ISingleValueOperationCallback { if(mtbColt == null) { - this.createNewUL(UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO.getStringValue()), CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, progressDialog, true, null); - BarcodeManager.enable(); + if(!UtilityBarcode.isEtichettaAnonimaOfCurrentYear(barcodeScanDTO.getStringValue())) { + UtilityExceptions.defaultException(mActivity, new Exception("Per continuare scansiona un'etichetta dell'anno corrente"), progressDialog, false); + BarcodeManager.enable(); + } else { + this.createNewUL(UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO.getStringValue()), CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, progressDialog, true, null); + BarcodeManager.enable(); + } } else { progressDialog.dismiss(); BarcodeManager.enable(); @@ -566,7 +571,7 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl return; } - PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), new ISimpleOperationCallback>() { + PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.SECONDARIA, new ISimpleOperationCallback>() { @Override public void onSuccess(List value) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java index f0f0061f..c95419d8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java @@ -3,6 +3,8 @@ package it.integry.integrywmsnative.gest.main; import android.content.Context; import android.os.Bundle; + +import androidx.appcompat.app.ActionBar; import androidx.fragment.app.Fragment; import android.view.LayoutInflater; import android.view.View; @@ -13,6 +15,8 @@ import net.cachapa.expandablelayout.ExpandableLayout; import butterknife.BindView; import butterknife.ButterKnife; +import butterknife.OnClick; +import it.integry.integrywmsnative.MainActivity; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; @@ -93,8 +97,35 @@ public class MainFragment extends Fragment implements ITitledFragment { } + @Override - public String getTitle(Context context) { - return context.getString(R.string.app_name); + public void onCreateActionBar(ActionBar actionBar, Context context) { + actionBar.setTitle(context.getText(R.string.app_name).toString()); } + + @OnClick(R.id.fast_button_accettazione) + public void onClickAccettazione(View view) { + ((MainActivity) getActivity()).setItem(R.id.nav_accettazione); + } + + @OnClick(R.id.fast_button_spedizione) + public void onClickSpedizione(View view) { + ((MainActivity) getActivity()).setItem(R.id.nav_spedizione); + } + + @OnClick(R.id.fast_button_rettifica_giacenze) + public void onClickRettificaGiacenze(View view) { + ((MainActivity) getActivity()).setItem(R.id.nav_rettifica_giacenze); + } + + @OnClick(R.id.fast_button_versamento) + public void onClickVersamento(View view) { + ((MainActivity) getActivity()).setItem(R.id.nav_versamento_merce); + } + + @OnClick(R.id.fast_button_picking_libero) + public void onClickPickingLibero(View view) { + ((MainActivity) getActivity()).setItem(R.id.nav_free_picking); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoActivity.java index 7dc16672..03e9e151 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoActivity.java @@ -27,13 +27,13 @@ public class PickingLiberoActivity extends AppCompatActivity { mBindings = DataBindingUtil.setContentView(this, R.layout.activity_picking_libero); mHelper = new PickingLiberoHelper(this); - +/* mViewModel = new PickingLiberoViewModel(); - mViewModel.init(this, mBindings, mHelper); + mViewModel.init(this, mBindings, mHelper, getSupportActionBar()); mBindings.setViewmodel(mViewModel); - setSupportActionBar(this.mBindings.toolbar); + setSupportActionBar(this.mBindings.layout.toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowTitleEnabled(false); @@ -42,11 +42,12 @@ public class PickingLiberoActivity extends AppCompatActivity { .setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false))); - mBindings.waterfallToolbar.setNestedScrollView(mBindings.scrollView); + mBindings.layout.waterfallToolbar.setNestedScrollView(mBindings.layout.scrollView); + */ } public void setTitle(String title) { - mBindings.toolbarTitle.setText(title); + mBindings.layout.toolbarTitle.setText(title); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java new file mode 100644 index 00000000..c0b3916a --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java @@ -0,0 +1,83 @@ +package it.integry.integrywmsnative.gest.picking_libero; + + +import android.content.Context; +import android.os.Bundle; +import androidx.fragment.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.appcompat.app.ActionBar; +import androidx.databinding.DataBindingUtil; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; +import it.integry.integrywmsnative.databinding.FragmentPickingLiberoBinding; +import it.integry.integrywmsnative.gest.picking_libero.core.PickingLiberoHelper; +import it.integry.integrywmsnative.gest.picking_libero.viewmodel.PickingLiberoViewModel; + +/** + * A simple {@link Fragment} subclass. + */ +public class PickingLiberoFragment extends Fragment implements ITitledFragment { + + private FragmentPickingLiberoBinding mBindings; + + private PickingLiberoHelper mHelper; + private PickingLiberoViewModel mViewModel; + + private ActionBar mAppCompatActionBar; + + private int barcodeScannerIstanceID = -1; + + public PickingLiberoFragment() { + // Required empty public constructor + } + + public static PickingLiberoFragment newInstance() { + PickingLiberoFragment fragment = new PickingLiberoFragment(); + Bundle args = new Bundle(); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreateActionBar(ActionBar actionBar, Context context) { + mAppCompatActionBar = actionBar; + mAppCompatActionBar.setTitle(context.getText(R.string.free_picking_title_fragment).toString()); + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_picking_libero, container, false); + + mHelper = new PickingLiberoHelper(getActivity()); + + mViewModel = new PickingLiberoViewModel(); + mViewModel.init(getActivity(), mBindings, mHelper, mAppCompatActionBar); + + mBindings.setViewmodel(mViewModel); + + barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessfull(mViewModel.onScanSuccessfull) + .setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false))); + + + mBindings.waterfallToolbar.setNestedScrollView(mBindings.scrollView); + + return mBindings.getRoot(); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java index 6768e4bf..87aba666 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.gest.picking_libero.viewmodel; import android.app.Activity; import android.app.ProgressDialog; +import android.content.Context; import android.text.SpannableString; import android.view.View; @@ -15,6 +16,7 @@ import java.util.Iterator; import java.util.List; import androidx.annotation.NonNull; +import androidx.appcompat.app.ActionBar; import androidx.core.content.ContextCompat; import androidx.databinding.Observable; import androidx.databinding.ObservableArrayList; @@ -45,6 +47,7 @@ import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.ActivityPickingLiberoBinding; +import it.integry.integrywmsnative.databinding.FragmentPickingLiberoBinding; import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoActivity; import it.integry.integrywmsnative.gest.picking_libero.core.PickingLiberoHelper; import it.integry.integrywmsnative.gest.picking_libero.core.PickingLiberoListAdapter; @@ -67,16 +70,19 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked { private BottomSheetBehavior mBottomSheetBehavior; - private PickingLiberoActivity mContext; - private ActivityPickingLiberoBinding mBinding; + private Activity mContext; + private FragmentPickingLiberoBinding mBinding; private PickingLiberoHelper mHelper; + private ActionBar mAppCompatActionBar; + private PickingLiberoListAdapter mAdapter; - public void init(PickingLiberoActivity context, ActivityPickingLiberoBinding binding, PickingLiberoHelper helper) { + public void init(Activity context, FragmentPickingLiberoBinding binding, PickingLiberoHelper helper, ActionBar appCompatActionBar) { mContext = context; mBinding = binding; mHelper = helper; + mAppCompatActionBar = appCompatActionBar; initObservable(); @@ -101,14 +107,14 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked { if(mtbColt.get() != null) { initAdapter(); - mContext.setTitle(String.format(mContext.getText(R.string.lu_number_text).toString(), mtbColt.get().getNumCollo())); + mAppCompatActionBar.setTitle(String.format(mContext.getText(R.string.lu_number_text).toString(), mtbColt.get().getNumCollo())); initObservableMtbColr(); } else { destroyAdapter(); - mContext.setTitle(mContext.getText(R.string.free_picking).toString()); + mAppCompatActionBar.setTitle(mContext.getText(R.string.free_picking).toString()); } thereIsAnOpenedUL.set(mtbColt.get() != null); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java index 23b0e531..0df6c53b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java @@ -2,6 +2,8 @@ package it.integry.integrywmsnative.gest.rettifica_giacenze; import android.content.Context; import android.content.res.ColorStateList; + +import androidx.appcompat.app.ActionBar; import androidx.databinding.DataBindingUtil; import android.os.Bundle; import androidx.fragment.app.Fragment; @@ -99,15 +101,13 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme super.onDetach(); } - @Override - public String getTitle(Context context) { - return context.getResources().getString(R.string.rettifica_giacenze_fragment_title); + public void onCreateActionBar(ActionBar actionBar, Context context) { + actionBar.setTitle(context.getText(R.string.rettifica_giacenze_fragment_title).toString()); } - public void setUIToForn() { mBinding.rettificaGiacenzeFornCheckBox.setChecked(true); mBinding.rettificaGiacenzeFornLayout.setBackground(getActivity().getResources().getDrawable(R.drawable.circular_background_left)); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java index 6c100d67..05198329 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java @@ -1,6 +1,8 @@ package it.integry.integrywmsnative.gest.settings; import android.content.Context; + +import androidx.appcompat.app.ActionBar; import androidx.databinding.DataBindingUtil; import android.os.Bundle; import androidx.fragment.app.Fragment; @@ -29,8 +31,8 @@ public class MainSettingsFragment extends Fragment implements ITitledFragment { } @Override - public String getTitle(Context context){ - return context.getText(R.string.settings_category).toString(); + public void onCreateActionBar(ActionBar actionBar, Context context) { + actionBar.setTitle(context.getText(R.string.settings_category).toString()); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/settings/SettingsPreferenceFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/settings/SettingsPreferenceFragment.java index 6b52e234..5b209fba 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/settings/SettingsPreferenceFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/settings/SettingsPreferenceFragment.java @@ -2,6 +2,8 @@ package it.integry.integrywmsnative.gest.settings; import android.content.Context; import android.os.Bundle; + +import androidx.appcompat.app.ActionBar; import androidx.preference.CheckBoxPreference; import androidx.preference.EditTextPreference; import androidx.preference.ListPreference; @@ -43,10 +45,9 @@ public class SettingsPreferenceFragment extends PreferenceFragmentCompat impleme } - @Override - public String getTitle(Context context) { - return context.getText(R.string.settings_category).toString(); + public void onCreateActionBar(ActionBar actionBar, Context context) { + actionBar.setTitle(context.getText(R.string.settings_category).toString()); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java index 1fd2f6a1..c103f461 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java @@ -3,6 +3,8 @@ package it.integry.integrywmsnative.gest.vendita; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; + +import androidx.appcompat.app.ActionBar; import androidx.databinding.DataBindingUtil; import android.os.Bundle; import androidx.fragment.app.Fragment; @@ -81,8 +83,8 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR } @Override - public String getTitle(Context context){ - return context.getText(R.string.vendita_title_fragment).toString(); + public void onCreateActionBar(ActionBar actionBar, Context context) { + actionBar.setTitle(context.getText(R.string.vendita_title_fragment).toString()); } @Override @@ -129,10 +131,10 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR @Override public boolean onOptionsItemSelected(MenuItem item) { - if(item.getItemId() == R.id.action_free_picking) { - Intent myIntent = new Intent(getActivity(), PickingLiberoActivity.class); - startActivity(myIntent); - } +// if(item.getItemId() == R.id.action_free_picking) { +// Intent myIntent = new Intent(getActivity(), PickingLiberoActivity.class); +// startActivity(myIntent); +// } return true; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java index 83acbe46..a7af3d5c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.REST.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; @@ -60,7 +61,9 @@ public class VenditaViewModel { BarcodeManager.disable(); final ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); - if(UtilityBarcode.isEtichetta128(data)){ + if(UtilityBarcode.isEtichettaAnonima(data)) { + this.executeEtichettaLU(data.getStringValue(), progressDialog); + } else if(UtilityBarcode.isEtichetta128(data)){ this.executeEtichettaEan128(data, progressDialog); } else { progressDialog.dismiss(); @@ -69,8 +72,6 @@ public class VenditaViewModel { }; - - private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, ProgressDialog progressDialog) { BarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java index c3f290af..00ab4d09 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java @@ -47,7 +47,9 @@ import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCal import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel; import it.integry.integrywmsnative.BR; +import it.integry.integrywmsnative.view.dialogs.DialogAskLivelloPosizione; import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity; import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO; import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO; @@ -342,11 +344,18 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO ColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), true, false, mtbColt -> { if(mtbColt == null) { - this.createNewUL( - UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO.getStringValue()), - CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, progressDialog, - true, true, - null); + + if(!UtilityBarcode.isEtichettaAnonimaOfCurrentYear(barcodeScanDTO.getStringValue())) { + UtilityExceptions.defaultException(mActivity, new Exception("Per continuare scansiona un'etichetta dell'anno corrente"), progressDialog, false); + BarcodeManager.enable(); + } else { + + this.createNewUL( + UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO.getStringValue()), + CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, progressDialog, + true, true, + null); + } } else { this.createNewUL( @@ -733,56 +742,63 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO } private void printCollo(ProgressDialog progress) { + DialogAskShouldPrint.make(mActivity, "Packing List", shouldPrint -> { - PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.SECONDARIA, new ISimpleOperationCallback>() { - @Override - public void onSuccess(List value) { + if(shouldPrint) { + PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, new ISimpleOperationCallback>() { + @Override + public void onSuccess(List value) { - if(value.size() > 0) { - try{ - MtbColt currentMtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get(); + if (value.size() > 0) { + try { + MtbColt currentMtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get(); - ReportManager.getRightReportNameByMtbColt(currentMtbColt, reportName -> { + ReportManager.getRightReportNameByMtbColt(currentMtbColt, reportName -> { - PrinterRESTConsumer.printCollo( - value.get(0), - currentMtbColt, - 1, reportName, () -> { + PrinterRESTConsumer.printCollo( + value.get(0), + currentMtbColt, + 1, reportName, () -> { - postCloseOperations(); - progress.dismiss(); + postCloseOperations(); + progress.dismiss(); - }, ex -> { + }, ex -> { - progress.dismiss(); - String errorMessage = ex.getMessage(); - DialogSimpleMessageHelper.makeErrorDialog( - mActivity, - new SpannableString(errorMessage), - null, - null, - R.string.button_ignore_print, - () -> postCloseOperations()).show(); - }); + progress.dismiss(); + String errorMessage = ex.getMessage(); + DialogSimpleMessageHelper.makeErrorDialog( + mActivity, + new SpannableString(errorMessage), + null, + null, + R.string.button_ignore_print, + () -> postCloseOperations()).show(); + }); - }, ex -> UtilityExceptions.defaultException(mActivity, ex, progress) - ); - } catch (Exception ex) { - UtilityExceptions.defaultException(mActivity, ex, progress); - postCloseOperations(); + }, ex -> UtilityExceptions.defaultException(mActivity, ex, progress) + ); + } catch (Exception ex) { + UtilityExceptions.defaultException(mActivity, ex, progress); + postCloseOperations(); + } + } else { + progress.dismiss(); + String errorMessage = "Nessuna stampante configurata"; + DialogSimpleMessageHelper.makeWarningDialog(mActivity, new SpannableString(errorMessage), null, () -> postCloseOperations()).show(); + } } - } else { - progress.dismiss(); - String errorMessage = "Nessuna stampante configurata"; - DialogSimpleMessageHelper.makeWarningDialog(mActivity, new SpannableString(errorMessage), null, () -> postCloseOperations()).show(); - } - } - @Override - public void onFailed(Exception ex) { - UtilityExceptions.defaultException(mActivity, ex, progress); + @Override + public void onFailed(Exception ex) { + UtilityExceptions.defaultException(mActivity, ex, progress); + } + }); + } else { + postCloseOperations(); + progress.dismiss(); } - }); + }).show(); } private void deleteCollo(ProgressDialog progress) { @@ -800,6 +816,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO public boolean thereIsAnOpenedUL() { return mArticoliInColloBottomSheetViewModel.mtbColt.get() != null; } + public boolean thereIsAnyRowInUL() { return mArticoliInColloBottomSheetViewModel.mtbColt.get() != null && mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr() != null && @@ -842,7 +859,6 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO removeListFilter(); refreshOrderBy(true); - } @@ -881,8 +897,6 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO float qtaEvasaCurrentUL = qtaEvasaCurrentULInMtbColr; - - BigDecimal qtaDaEvadere = item.getQtaOrd().subtract(new BigDecimal(qtaEvasaTotale)); if(qtaDaEvadere.floatValue() < 0) qtaDaEvadere = BigDecimal.ZERO; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java index 8a354e1c..f7ec7157 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java @@ -1,6 +1,8 @@ package it.integry.integrywmsnative.gest.versamento_merce; import android.content.Context; + +import androidx.appcompat.app.ActionBar; import androidx.databinding.DataBindingUtil; import android.os.Bundle; import androidx.fragment.app.Fragment; @@ -83,7 +85,7 @@ public class VersamentoMerceFragment extends Fragment implements ITitledFragment } @Override - public String getTitle(Context context) { - return context.getResources().getString(R.string.versamento_merce_fragment_title); + public void onCreateActionBar(ActionBar actionBar, Context context) { + actionBar.setTitle(context.getText(R.string.versamento_merce_fragment_title).toString()); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_should_print/DialogAskShouldPrint.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_should_print/DialogAskShouldPrint.java new file mode 100644 index 00000000..3fd2eb45 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_should_print/DialogAskShouldPrint.java @@ -0,0 +1,50 @@ +package it.integry.integrywmsnative.view.dialogs.ask_should_print; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; + +import androidx.appcompat.app.AlertDialog; +import androidx.databinding.DataBindingUtil; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.databinding.DialogAskShouldPrintBinding; + +public class DialogAskShouldPrint { + + + private Context currentContext; + + private AlertDialog currentAlert; + + public static AlertDialog make(final Context context, final String nomeEtichetta, RunnableArgs onDialogDismiss) { + return new DialogAskShouldPrint(context, nomeEtichetta, onDialogDismiss).currentAlert; + } + + private DialogAskShouldPrint(Context context, String nomeEtichetta, RunnableArgs onDialogDismiss) { + currentContext = context; + + LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); + DialogAskShouldPrintBinding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_ask_should_print, null, false); + + final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context) + .setView(bindings.getRoot()); + + currentAlert = alertDialog.create(); + currentAlert.setCanceledOnTouchOutside(false); + + bindings.printMessage.setText("La procedura stamperà una " + nomeEtichetta); + + bindings.buttonConfirm.setOnClickListener(v -> { + currentAlert.dismiss(); + onDialogDismiss.run(true); + }); + + bindings.buttonAbort.setOnClickListener(v -> { + currentAlert.dismiss(); + onDialogDismiss.run(false); + }); + + } + +} diff --git a/app/src/main/res/drawable/ic_barcode_96.png b/app/src/main/res/drawable/ic_barcode_96.png new file mode 100644 index 00000000..05971ffb Binary files /dev/null and b/app/src/main/res/drawable/ic_barcode_96.png differ diff --git a/app/src/main/res/drawable/ic_download_black_24dp.xml b/app/src/main/res/drawable/ic_download_black_24dp.xml new file mode 100644 index 00000000..492b41d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_download_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_empty_box_96.png b/app/src/main/res/drawable/ic_empty_box_96.png new file mode 100644 index 00000000..bf75102d Binary files /dev/null and b/app/src/main/res/drawable/ic_empty_box_96.png differ diff --git a/app/src/main/res/drawable/ic_home_black_24dp.xml b/app/src/main/res/drawable/ic_home_black_24dp.xml new file mode 100644 index 00000000..70fb2910 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_load_shelf_96.png b/app/src/main/res/drawable/ic_load_shelf_96.png new file mode 100644 index 00000000..7586f3a9 Binary files /dev/null and b/app/src/main/res/drawable/ic_load_shelf_96.png differ diff --git a/app/src/main/res/drawable/ic_upload_black_24dp.xml b/app/src/main/res/drawable/ic_upload_black_24dp.xml new file mode 100644 index 00000000..d6339722 --- /dev/null +++ b/app/src/main/res/drawable/ic_upload_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_picking_libero.xml b/app/src/main/res/layout/activity_picking_libero.xml index 8aad8891..48476662 100644 --- a/app/src/main/res/layout/activity_picking_libero.xml +++ b/app/src/main/res/layout/activity_picking_libero.xml @@ -19,281 +19,9 @@ android:layout_height="match_parent"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/app/src/main/res/layout/dialog_ask_should_print.xml b/app/src/main/res/layout/dialog_ask_should_print.xml new file mode 100644 index 00000000..43804dc3 --- /dev/null +++ b/app/src/main/res/layout/dialog_ask_should_print.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index 2b4bf032..187dc478 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -142,5 +142,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_picking_libero.xml b/app/src/main/res/layout/fragment_picking_libero.xml new file mode 100644 index 00000000..761633d3 --- /dev/null +++ b/app/src/main/res/layout/fragment_picking_libero.xml @@ -0,0 +1,301 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/activity_main_drawer.xml b/app/src/main/res/menu/activity_main_drawer.xml index 2e1c24ee..7f15be9d 100644 --- a/app/src/main/res/menu/activity_main_drawer.xml +++ b/app/src/main/res/menu/activity_main_drawer.xml @@ -2,22 +2,30 @@ + + + + + + diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index af5fbf02..e86eca4f 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -41,6 +41,7 @@ Mostra UL già create Recupera UL Stampa UL + Stampa Conferma Note Aggiuntive Inserisci eventuali note aggiuntive della tua UL @@ -175,5 +176,6 @@ Picking libero Per iniziare clicca sul + in basso a destra Scansiona un articolo per iniziare + Picking libero \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 9b2037d0..25c8acae 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -29,6 +29,7 @@ #1976D2 + #795548 #884CAF50 #4CAF50 @@ -57,6 +58,8 @@ #D32F2F + #009688 + #FDD835 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f4102b16..c115924b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -25,6 +25,7 @@ Check out Inventory Items placement + Free picking Error Ops Warning @@ -41,6 +42,7 @@ Show already created LU Recover LU Print LU + Print Confirm Additional notes Enter any additional notes in your logistics unit @@ -177,4 +179,7 @@ Please press + button to start with picking Scan an item to start + + Hello blank fragment +