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">
<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" />
<option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />

View File

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

View File

@ -12,16 +12,13 @@ import com.google.android.material.navigation.NavigationView;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SearchView;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.Toast;
import androidx.fragment.app.FragmentTransaction;
@ -169,7 +166,7 @@ public class MainActivity extends BaseActivity
private void initGestMenu() {
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);
List<MenuConfiguration.MenuGroup> menuGroups = menuConfiguration.getGroups();
@ -196,7 +193,7 @@ public class MainActivity extends BaseActivity
}
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);
List<MenuConfiguration.MenuGroup> menuGroups = menuConfiguration.getGroups();
@ -315,7 +312,7 @@ public class MainActivity extends BaseActivity
private void init(){
ServerStatusChecker.getIstance().addCallback(value -> {
ServerStatusChecker.getInstance().addCallback(value -> {
if(value && (!mIsOnline || firstCheckExecution)){
SettingsManager.loadDBVariables(() -> {

View File

@ -12,6 +12,7 @@ public class BaseCustomConfiguration implements ICustomConfiguration {
public static class Keys {
public static int MENU_CONFIGURATION = 0;
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>() {{

View File

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

View File

@ -1,6 +1,7 @@
package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
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")
ArticoloOrdine findArticoloByCodMartAndOrdine(int ordineId, String codMart);
@Query( " SELECT articoli_ordine.* " +
@Query(" SELECT articoli_ordine.* " +
" FROM articoli_ordine " +
" LEFT OUTER JOIN articoli_griglia on articoli_ordine.cod_mart = articoli_griglia.cod_mart " +
" WHERE " +
@ -50,4 +51,8 @@ public interface ArticoloOrdineDao {
" AND articoli_ordine.id_ordine = :ordineId " +
" LIMIT 1")
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;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
@ -27,4 +28,7 @@ public interface OrdineDao {
@Update
void update(Ordine ordine);
@Delete
void delete(Ordine ordine);
}

View File

@ -143,7 +143,8 @@ public class Ordine {
}
public void setCodMdep(@Nullable String codMdep) {
this.codMdep = codMdep; }
this.codMdep = codMdep;
}
public void setDataOrdS(String 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.expansion.RunnableArgs;
public class OrdineRepository extends Repository{
public class OrdineRepository extends Repository {
private OrdineDao mRepository;
@ -18,44 +18,45 @@ public class OrdineRepository extends Repository{
this.mRepository = MainApplication.getOrdiniRepository();
}
public void selectAll(RunnableArgs<List<Ordine>> onSuccess, RunnableArgs<Exception> onError){
Runnable query = ()->{
try{
public void selectAll(RunnableArgs<List<Ordine>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mRepository.getAll());
}catch (Exception e){
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
public void selectAllTransmitted(RunnableArgs<List<OrdineWithGriglia>> onSuccess, RunnableArgs<Exception> onError){
Runnable query = ()->{
try{
public void selectAllTransmitted(RunnableArgs<List<OrdineWithGriglia>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mRepository.getAllTrasnmitted());
}catch (Exception e){
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
public void selectAllOpenOrders(Griglia griglia, RunnableArgs<List<OrdineWrapper>> onSuccess, RunnableArgs<Exception> onError){
Runnable query = ()->{
try{
public void selectAllOpenOrders(Griglia griglia, RunnableArgs<List<OrdineWrapper>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mRepository.getAllOpenOrdersByGriglia(griglia.getGrigliaId()));
}catch (Exception e){
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
public void insert(Ordine ordine, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError){
execute(()->{
try{
public void insert(Ordine ordine, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
Long id = mRepository.insert(ordine);
onSuccess.run(id.intValue());
}catch (Exception e){
} catch (Exception e) {
onError.run(e);
}
});
@ -63,11 +64,22 @@ public class OrdineRepository extends Repository{
public void updateOrder(Ordine ordine, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) {
execute(()->{
try{
execute(() -> {
try {
mRepository.update(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);
}
});

View File

@ -11,8 +11,10 @@ public class BaseActivity extends AppCompatActivity {
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getDeviceId() != -1 && event.getDeviceId() != 0 && event.getAction() == KeyEvent.ACTION_DOWN){
BarcodeManager.onKeyDown(event.getKeyCode(),event);
if (event.getDeviceId() != -1 && event.getDeviceId() != 0) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
BarcodeManager.onKeyDown(event.getKeyCode(), event);
}
return false;
}
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) {
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class);
ordiniARestService
.getArticoliListino(codAlis, SettingsManager.i().userSession.profileDB, SettingsManager.i().user.username, SettingsManager.i().user.password)
.getArticoliListino(codAlis)
.enqueue(new Callback<ServiceRESTResponse<GrigliaDTO>>() {
@Override
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);
ordiniARestService
.saveOrdine(saveDTO, SettingsManager.i().userSession.profileDB, SettingsManager.i().user.username, SettingsManager.i().user.password)
.saveOrdine(saveDTO)
.enqueue(new Callback<List<ServiceRESTResponse<DtbOrdt>>>() {
@Override
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 {
@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")
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 {
private static ServerStatusChecker istance = new ServerStatusChecker();
private static ServerStatusChecker instance = new ServerStatusChecker();
private List<RunnableArgs<Boolean>> mCallback = new ArrayList<>();
@ -47,17 +47,17 @@ public class ServerStatusChecker {
public static void init(){
istance.shouldExecute = true;
instance.shouldExecute = true;
istance.handler.post(istance.runnableCode);
instance.handler.post(instance.runnableCode);
}
public static void dispose() {
istance.shouldExecute = false;
instance.shouldExecute = false;
}
public static ServerStatusChecker getIstance() {
return istance;
public static ServerStatusChecker getInstance() {
return instance;
}
}

View File

@ -4,7 +4,6 @@ import android.app.Activity;
import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
@ -12,23 +11,33 @@ import android.os.Build;
import android.os.Environment;
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.UpdateFrom;
import com.github.javiersantos.appupdater.objects.Update;
import java.io.File;
import androidx.core.content.FileProvider;
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;
public class UpdatesManager {
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 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)

View File

@ -94,7 +94,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
private void init(){
ServerStatusChecker.getIstance().addCallback(value -> {
ServerStatusChecker.getInstance().addCallback(value -> {
if(value && mBindings.noConnectionTopLayout.isExpanded()){
collapseNoConnectionLayout();
@ -215,7 +215,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
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);
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.UtilityExceptions;
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.view.dialogs.DialogAskAction;
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.ui.FabMenuCustomAnimations;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class PVOrdineAcquistoEditActivity extends BaseActivity {
@ -40,7 +42,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
private Griglia mGriglia;
private List<ArticoloOrdine> mArticoli = new ArrayList<>();
private PVEditOrderHelper mhelper;
private ActivityPvordineAcquistoEditBinding mBinding;
private ActivityPvOrdineAcquistoEditBinding mBinding;
private int mBarcodeScannerIstanceID;
private OrdineAcquistoArtListAdapter mAdapter;
@ -49,15 +51,22 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
super.onCreate(savedInstanceState);
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);
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();
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));
mBinding.orderIdentifier.setText(Html.fromHtml(testataOrdString));
FabMenuCustomAnimations.changeIconOnFocus(mBinding.closeActivityFab, R.drawable.ic_check_white_24dp, R.drawable.ic_close_24dp);
initRecyclerView();
fetchDetails();
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
@ -66,6 +75,12 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
}
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
private void initRecyclerView() {
mBinding.articoliOrdineList.setHasFixedSize(true);
@ -74,18 +89,47 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
DividerItemDecoration itemDecorator = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider));
mBinding.articoliOrdineList.addItemDecoration(itemDecorator);
mAdapter = new OrdineAcquistoArtListAdapter(this, mArticoli, this::addArticolo);
mAdapter = new OrdineAcquistoArtListAdapter(this, mArticoli, this::selectAction);
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) {
runOnUiThread(()->{
runOnUiThread(() -> {
BarcodeManager.enable();
UtilityExceptions.defaultException(this, ex, false);
});
}
private void onScanSuccessful(BarcodeScanDTO dto) {
mBinding.closeActivityFab.close(false);
BarcodeManager.disable();
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
mhelper.checkArticolo(
@ -103,16 +147,13 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
}
private void addArticolo(ArticoloOrdine articoloOrdine) {
runOnUiThread(()->{
EditArticoloDialog.make(this, articoloOrdine, articolo -> {
BarcodeManager.enable();
if (articolo == null) {
Toast.makeText(this, "Inserimento articolo annullato", Toast.LENGTH_SHORT).show();
} else {
fetchArticoli();
}
}).show();
});
runOnUiThread(() -> EditArticoloDialog.make(this, articoloOrdine, articolo -> {
BarcodeManager.enable();
if (articolo != null) {
Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show();
}
fetchArticoli();
}).show());
}
private void fetchDetails() {
@ -122,7 +163,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
private void fetchGriglia() {
mhelper.loadGriglia(mOrdine.getIdGriglia(), griglia -> {
runOnUiThread(()->{
runOnUiThread(() -> {
mGriglia = griglia;
mBinding.codAlis.setText(mGriglia.getCodAlis());
});
@ -134,10 +175,12 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
mhelper.loadArticoli(mOrdine, articoli -> {
progress.dismiss();
mArticoli = articoli;
runOnUiThread(()->{
runOnUiThread(() -> {
mAdapter.updateItems(mArticoli);
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);
}
@ -148,15 +191,15 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
public void exportOrdine() {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
PVOrdiniAcquistoRESTConsumer.saveOrdine(mOrdine , mArticoli,mGriglia,(ordine)->{
PVOrdiniAcquistoRESTConsumer.saveOrdine(mOrdine, mArticoli, mGriglia, (ordine) -> {
progress.dismiss();
runOnUiThread(()-> {
runOnUiThread(() -> {
Toast.makeText(this, "Ordine salvato con successo", Toast.LENGTH_SHORT).show();
onBackPressed();
});
},e-> runOnUiThread(()-> {
}, e -> runOnUiThread(() -> {
progress.dismiss();
UtilityExceptions.defaultException(this,e);
UtilityExceptions.defaultException(this, e);
}));
}

View File

@ -93,7 +93,7 @@ public class OrdineAcquistoArtListAdapter extends SectionedRecyclerViewAdapter<O
@Override
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

View File

@ -6,6 +6,8 @@ import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.text.Editable;
import android.text.Html;
import android.text.SpannableString;
import android.text.TextWatcher;
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.utility.UtilityDialog;
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.databinding.DialogPvEditArticoloBinding;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class EditArticoloDialog {
@ -32,7 +36,6 @@ public class EditArticoloDialog {
private PVEditOrderHelper mHelper;
private ArticoloOrdine mArticolo;
private ArticoloOrdine mSavedArt;
private boolean mLockedInput = false;
@ -41,6 +44,7 @@ public class EditArticoloDialog {
mContext = context;
mArticolo = articolo;
mHelper = new PVEditOrderHelper(context);
mSavedArt = null;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_pv_edit_articolo, null, false);
@ -51,8 +55,12 @@ public class EditArticoloDialog {
UtilityDialog.setTo90PercentSize(mContext, mDialog);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
int qtaCnf = (int)Math.ceil(mArticolo.getQtaOrd() / mArticolo.getQtaCnf());
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 -> {
onDialogDismiss.run(mSavedArt);
@ -84,7 +92,7 @@ public class EditArticoloDialog {
@Override
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
@ -93,7 +101,7 @@ public class EditArticoloDialog {
}
});
}
public void setQtaCnf(float qtaCnf){
public void setQtaCnf(int qtaCnf){
if (mLockedInput){
mLockedInput = false;
}else{
@ -109,8 +117,7 @@ public class EditArticoloDialog {
mLockedInput = false;
}else{
mLockedInput = true;
float qtaCnf = qtaOrd / mArticolo.getQtaCnf();
mBinding.qtaCnf.setText(String.valueOf(qtaCnf));
mBinding.qtaCnf.setText(String.valueOf((int)Math.ceil(qtaOrd / mArticolo.getQtaCnf())));
}
}
@ -129,6 +136,8 @@ public class EditArticoloDialog {
}catch (Exception e){
mContext.runOnUiThread(()-> UtilityExceptions.defaultException(mContext,e));
progress.dismiss();
return;
}
mHelper.saveArticoloToOrdine(mArticolo, ()->{
mSavedArt = mArticolo;

View File

@ -67,4 +67,8 @@ public class PVEditOrderHelper {
public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs<Exception> 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.Intent;
import android.os.Bundle;
import android.text.Html;
import android.text.SpannableString;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.core.content.ContextCompat;
@ -22,6 +24,7 @@ import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
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.IScrollableFragment;
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.UtilityProgress;
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_ordine_acquisto_edit.PVOrdineAcquistoEditActivity;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.view.dialogs.DialogAskAction;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitledFragment, IScrollableFragment {
@ -47,6 +52,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
private Griglia mGriglia;
private OrdineAcquistoPvOpenListAdapter mAdapter;
private List<OrdineWrapper> mRenderedOrderList = new ArrayList<>();
private boolean mRedirectToNewOrder = true;
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);
refreshRenderedOrdini(ordini);
mAdapter.updateItems(mRenderedOrderList);
if (mRenderedOrderList.size() <= 0 && mRedirectToNewOrder) {
createNewOrder();
}else{
mRedirectToNewOrder = false;
}
}
public Griglia getGriglia() {
@ -133,11 +144,11 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
DividerItemDecoration itemDecorator = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider));
mBinding.ordiniAApertiMainList.addItemDecoration(itemDecorator);
mAdapter = new OrdineAcquistoPvOpenListAdapter(getActivity(), mRenderedOrderList, selectOrdine);
mAdapter = new OrdineAcquistoPvOpenListAdapter(getActivity(), mRenderedOrderList, this::selectAction);
mBinding.ordiniAApertiMainList.setAdapter(mAdapter);
}
private RunnableArgs<Ordine> selectOrdine = ordine -> {
private void editOrdine(Ordine ordine) {
Intent myIntent = new Intent(getActivity(), PVOrdineAcquistoEditActivity.class);
@ -146,18 +157,50 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
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) {
mRenderedOrderList.clear();
if (ordini != null) mRenderedOrderList.addAll(ordini);
mRenderedOrderList.addAll(ordini);
}
public void createNewOrder() {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity(), getString(R.string.ordini_a_aperti_progress));
mHelper.createNewOrder(mGriglia, order -> {
progress.dismiss();
getActivity().runOnUiThread(()-> selectOrdine.run(order));
getActivity().runOnUiThread(() -> editOrdine(order));
}, e -> getActivity().runOnUiThread(() -> UtilityExceptions.defaultException(getActivity(), e, progress)));
}
@ -175,7 +218,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
@Override
public void onResume() {
super.onResume();
if (mGriglia != null){
if (mGriglia != null) {
fetchOrders();
}
}

View File

@ -28,7 +28,7 @@ public class OrdineAcquistoPvOpenListAdapter extends SectionedRecyclerViewAdapte
private Context mContext;
private List<OrdineWrapper> mDataset;
RunnableArgs<Ordine> mOnItemSelect;
private RunnableArgs<Ordine> mOnItemSelect;
static class SubheaderHolder extends RecyclerView.ViewHolder {
@ -70,7 +70,7 @@ public class OrdineAcquistoPvOpenListAdapter extends SectionedRecyclerViewAdapte
private List<OrdineWrapper> orderItems(List<OrdineWrapper> dataset) {
return Stream.of(dataset)
.distinctBy(OrdineWrapper::getOrdine)
.sortBy(x -> UtilityDate.formatDate(x.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
.sortBy(x -> x.getOrdine().getOrdineId())
.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));
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.getRoot().setOnClickListener(v -> {
mOnItemSelect.run(ordine);
});
holder.binding.getRoot().setOnClickListener(v -> mOnItemSelect.run(ordine));
}

View File

@ -82,7 +82,7 @@ public class DialogScanLisA {
});
};
RunnableArgs<Griglia> onGrigliaAvaialable = griglia->{
RunnableArgs<Griglia> onGrigliaAvailable = griglia->{
mContext.runOnUiThread(()->{
progressDialog.dismiss();
mGriglia = griglia;
@ -95,13 +95,9 @@ public class DialogScanLisA {
repository.findByCodAlis(data.getStringValue(),griglia->{
if (griglia != null){
griglia.getGriglia().setCountArticoli(griglia.getCountArticoli());
if (griglia.getCountArticoli() >0){
onGrigliaAvaialable.run(griglia.getGriglia());
}else{
mHelper.updateGriglia(griglia.getGriglia(), onGrigliaAvaialable,mOnError);
}
mHelper.updateGriglia(griglia.getGriglia(), onGrigliaAvailable,mOnError);
}else{
mHelper.downloadAndSaveLisA(data.getStringValue(), onGrigliaAvaialable,mOnError);
mHelper.downloadAndSaveLisA(data.getStringValue(), onGrigliaAvailable,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.Ordine;
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.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
@ -21,11 +22,14 @@ public class OrdineAcquistoPvHelper {
private Context mContext;
private GrigliaRepository mGrigliaRepository;
private ArticoliGrigliaRepository mArticoliGrigliaRepository;
private ArticoliOrdineRepository mArticoliOrdineRepository;
private OrdineRepository mOrdineRepository;
public OrdineAcquistoPvHelper(Context mContext) {
this.mContext = mContext;
this.mGrigliaRepository = new GrigliaRepository();
this.mArticoliGrigliaRepository = new ArticoliGrigliaRepository();
this.mArticoliOrdineRepository = new ArticoliOrdineRepository();
this.mOrdineRepository = new OrdineRepository();
}
@ -67,9 +71,13 @@ public class OrdineAcquistoPvHelper {
Ordine ordine = new Ordine();
ordine.setDataIns(new Date());
ordine.setIdGriglia(griglia.getGrigliaId());
mOrdineRepository.insert(ordine,id->{
mOrdineRepository.insert(ordine, id -> {
ordine.setOrdineId(id);
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.WindowManager;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.MultiAutoCompleteTextView;
import com.annimon.stream.Stream;
@ -131,7 +130,7 @@ public class DialogVenditaFiltroAvanzato {
}
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.callOnClick();

View File

@ -100,7 +100,7 @@ public class VenditaOrdineInevasoHelper {
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<>();

View File

@ -1,7 +1,7 @@
package it.integry.integrywmsnative.gest.vendita_ordine_inevaso.viewmodel;
import android.app.Dialog;
import android.app.ProgressDialog;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableField;
import androidx.recyclerview.widget.LinearLayoutManager;
@ -921,7 +921,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
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 -> {

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

View File

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

View File

@ -283,4 +283,11 @@
<string name="add">Aggiungi</string>
<string name="close_and_export">Chiudi ed esporta 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>

View File

@ -288,4 +288,11 @@
<string name="add">Add</string>
<string name="close_and_export">Close and export</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>

View File

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

View File

@ -2,3 +2,4 @@ call build_azienda.bat _base
call build_azienda.bat vgalimenti
call build_azienda.bat ime
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() {
configurations.put(Keys.MENU_CONFIGURATION, new MenuConfigurationSAPORIVERIPV());
configurations.put(Keys.CUSTOM_DYNAMIC_VERSION_PATH,"_pv");
}
}