Implementato bottom sheet per le action di modifica/delete riga in collo.
Implementata data scad in DialogInputQuantity.
This commit is contained in:
parent
5a6582fbff
commit
26361912f4
BIN
.idea/caches/build_file_checksums.ser
generated
BIN
.idea/caches/build_file_checksums.ser
generated
Binary file not shown.
@ -33,6 +33,7 @@ dependencies {
|
||||
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
|
||||
exclude group: 'com.android.support', module: 'support-annotations'
|
||||
})
|
||||
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
implementation 'com.orhanobut:logger:2.2.0'
|
||||
implementation 'com.android.support:appcompat-v7:27.1.1'
|
||||
@ -47,6 +48,7 @@ dependencies {
|
||||
implementation 'org.parceler:parceler-api:1.1.10'
|
||||
annotationProcessor 'org.parceler:parceler:1.1.10'
|
||||
implementation 'com.annimon:stream:1.2.1'
|
||||
|
||||
//MVVM
|
||||
implementation 'android.arch.lifecycle:extensions:1.1.1'
|
||||
annotationProcessor "android.arch.lifecycle:compiler:1.1.1"
|
||||
@ -58,9 +60,11 @@ dependencies {
|
||||
implementation 'com.jakewharton:butterknife:8.8.1'
|
||||
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
|
||||
implementation 'br.com.zbra:android-linq:1.1.0'
|
||||
|
||||
//FAB
|
||||
//implementation 'com.getbase:floatingactionbutton:1.10.1'
|
||||
implementation 'com.github.clans:fab:1.6.4'
|
||||
|
||||
//CUSTOM VIEWS
|
||||
implementation 'de.hdodenhof:circleimageview:2.2.0'
|
||||
implementation 'net.cachapa.expandablelayout:expandablelayout:2.9.2'
|
||||
@ -70,6 +74,8 @@ dependencies {
|
||||
implementation 'com.fxn769:stash:1.2'
|
||||
testImplementation 'junit:junit:4.12'
|
||||
implementation project(':waterfall_toolbar')
|
||||
|
||||
implementation 'com.mikhaellopez:lazydatepicker:1.0.0'
|
||||
}
|
||||
repositories {
|
||||
mavenCentral()
|
||||
|
||||
@ -4,6 +4,7 @@ import android.databinding.BindingAdapter;
|
||||
import android.databinding.BindingConversion;
|
||||
import android.support.design.widget.TextInputEditText;
|
||||
import android.support.v4.util.Pair;
|
||||
import android.support.v7.widget.AppCompatTextView;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.CheckBox;
|
||||
@ -73,6 +74,27 @@ public class Converters {
|
||||
}
|
||||
}
|
||||
|
||||
@BindingAdapter("app:binding")
|
||||
public static void bindTextView(AppCompatTextView view, final BindableString bindableString) {
|
||||
Pair<BindableString, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
|
||||
if (pair == null || pair.first != bindableString) {
|
||||
if (pair != null) {
|
||||
view.removeTextChangedListener(pair.second);
|
||||
}
|
||||
TextWatcherAdapter watcher = new TextWatcherAdapter() {
|
||||
@Override public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
bindableString.set(s.toString());
|
||||
}
|
||||
};
|
||||
view.setTag(R.id.bound_observable, new Pair<>(bindableString, watcher));
|
||||
view.addTextChangedListener(watcher);
|
||||
}
|
||||
String newValue = bindableString.get();
|
||||
if (!view.getText().toString().equals(newValue)) {
|
||||
view.setText(newValue);
|
||||
}
|
||||
}
|
||||
|
||||
@BindingAdapter("app:binding")
|
||||
public static void bindTextInputEditText(TextInputEditText view, final BindableFloat bindableFloat) {
|
||||
DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Locale.getDefault());
|
||||
|
||||
@ -370,9 +370,6 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
|
||||
UtilityExceptions.defaultException(mActivity, ex, progress);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -457,8 +454,7 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
|
||||
x -> x.getCodMart().equalsIgnoreCase(item.mtbAart.codMart) &&
|
||||
x.getNumOrd() == item.numOrd &&
|
||||
(x.getCodJcom() != null && x.getCodJcom().equalsIgnoreCase(item.codJcom)) &&
|
||||
x.getRigaOrd() == item.rigaOrd
|
||||
).toList();
|
||||
x.getRigaOrd() == item.rigaOrd).toList();
|
||||
|
||||
float qtaEvasaInMtbColr = 0;
|
||||
for (MtbColr mtbColr : filteredMtbColrs) {
|
||||
@ -479,6 +475,7 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
|
||||
final MtbColr mtbColr = new MtbColr()
|
||||
.setCodMart(item.mtbAart.codMart)
|
||||
.setPartitaMag(quantityDTO.batchLot.get())
|
||||
.setDataScadPartita(quantityDTO.expireDate)
|
||||
.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get()))
|
||||
.setDescrizione(item.descrizioneEstesa)
|
||||
.setNumOrd(item.numOrd)
|
||||
|
||||
@ -61,17 +61,14 @@ public class MainFragment extends Fragment {
|
||||
|
||||
|
||||
private void init(){
|
||||
ServerStatusChecker.getIstance().addCallback(new ISingleValueOperationCallback<Boolean>() {
|
||||
@Override
|
||||
public void onResult(Boolean value) {
|
||||
if(value && mNoConnectionLayout.isExpanded()){
|
||||
ServerStatusChecker.getIstance().addCallback(value -> {
|
||||
if(value && mNoConnectionLayout.isExpanded()){
|
||||
|
||||
collapseNoConnectionLayout();
|
||||
collapseNoConnectionLayout();
|
||||
|
||||
|
||||
} else if(!value && !mNoConnectionLayout.isExpanded()){
|
||||
expandNoConnectionLayout();
|
||||
}
|
||||
} else if(!value && !mNoConnectionLayout.isExpanded()){
|
||||
expandNoConnectionLayout();
|
||||
}
|
||||
});
|
||||
|
||||
@ -80,21 +77,11 @@ public class MainFragment extends Fragment {
|
||||
}
|
||||
|
||||
private void collapseNoConnectionLayout(){
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
mNoConnectionLayout.collapse(true);
|
||||
}
|
||||
});
|
||||
if(getActivity() != null) getActivity().runOnUiThread(() -> mNoConnectionLayout.collapse(true));
|
||||
}
|
||||
|
||||
private void expandNoConnectionLayout(){
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
mNoConnectionLayout.expand(true);
|
||||
}
|
||||
});
|
||||
if(getActivity() != null) getActivity().runOnUiThread(() -> mNoConnectionLayout.expand(true));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.input_quantity;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.app.DatePickerDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.res.ColorStateList;
|
||||
@ -10,8 +11,10 @@ import android.databinding.ViewDataBinding;
|
||||
import android.graphics.Color;
|
||||
import android.os.Handler;
|
||||
import android.os.SystemClock;
|
||||
import android.support.design.widget.TextInputEditText;
|
||||
import android.support.design.widget.TextInputLayout;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.widget.AppCompatTextView;
|
||||
import android.text.SpannableString;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
@ -20,12 +23,19 @@ import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.Button;
|
||||
import android.widget.DatePicker;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
|
||||
import it.integry.integrywmsnative.BR;
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
|
||||
import it.integry.integrywmsnative.core.REST.consumers.ISingleValueOperationCallback;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.IButtonDialogAction;
|
||||
@ -34,6 +44,8 @@ public class DialogInputQuantity {
|
||||
|
||||
private static ColorStateList originalColorStateList = null;
|
||||
|
||||
private static String scadenzaString = "Scadenza";
|
||||
|
||||
public static AlertDialog makeBase(final Context context, OrdineAccettazioneDTO.Riga articoloItem, final float qtaEvasa, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) {
|
||||
|
||||
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
|
||||
@ -90,12 +102,15 @@ public class DialogInputQuantity {
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
initDatePicker(context, quantityDTO, contentView.getRoot().findViewById(R.id.input_data_scad));
|
||||
|
||||
return alert;
|
||||
|
||||
}
|
||||
|
||||
private static void setupQuantities(OrdineAccettazioneDTO.Riga articoloItem, QuantityDTO quantityDTO, float qtaEvasa){
|
||||
float qtaDaEvadere = articoloItem.qtaOrd - qtaEvasa;
|
||||
float qtaDaEvadere = articoloItem.getQtaDaEvadere().floatValue();
|
||||
if (qtaDaEvadere < 0) qtaDaEvadere = 0;
|
||||
|
||||
quantityDTO.qtaEvasa.set(qtaEvasa);
|
||||
@ -106,7 +121,14 @@ public class DialogInputQuantity {
|
||||
quantityDTO.qtaTot.set(qtaDaEvadere);
|
||||
quantityDTO.numCnf.set(qtaDaEvadere / quantityDTO.qtaCnf.get());
|
||||
|
||||
quantityDTO.shouldAskDataScad.set(articoloItem.mtbAart.isFlagTracciabilita() && articoloItem.mtbAart.ggScadPartita != null && articoloItem.mtbAart.ggScadPartita > 0);
|
||||
quantityDTO.shouldAskDataScad.set(articoloItem.mtbAart.isFlagTracciabilita() && articoloItem.mtbAart.getGgScadPartita() != null && articoloItem.mtbAart.getGgScadPartita() > 0);
|
||||
|
||||
if(quantityDTO.expireDate == null && articoloItem.mtbAart.getGgScadPartita() != null && articoloItem.mtbAart.getGgScadPartita() > 0) {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.add(Calendar.DATE, articoloItem.mtbAart.getGgScadPartita()); // number of days to add
|
||||
|
||||
quantityDTO.expireDate = c.getTime();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -243,13 +265,47 @@ public class DialogInputQuantity {
|
||||
}
|
||||
|
||||
|
||||
private static void initDatePicker(Context context, QuantityDTO quantityDTO, AppCompatTextView textInputLayout) {
|
||||
quantityDTO.expireDateString.set(scadenzaString);
|
||||
|
||||
if(quantityDTO.expireDate != null) {
|
||||
quantityDTO.expireDateString.set(UtilityDate.formatDate(quantityDTO.expireDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
}
|
||||
|
||||
|
||||
Runnable onTextClicked = () -> {
|
||||
// Get Current Date
|
||||
Calendar c = Calendar.getInstance();
|
||||
|
||||
if(quantityDTO.expireDate != null) {
|
||||
c.setTime(quantityDTO.expireDate);
|
||||
}
|
||||
|
||||
int mYear = c.get(Calendar.YEAR);
|
||||
int mMonth = c.get(Calendar.MONTH);
|
||||
int mDay = c.get(Calendar.DAY_OF_MONTH);
|
||||
|
||||
DatePickerDialog datePickerDialog = new DatePickerDialog(context,
|
||||
(view, year, month, day) -> {
|
||||
|
||||
quantityDTO.expireDate = new GregorianCalendar(year, month, day).getTime();
|
||||
quantityDTO.expireDateString.set(UtilityDate.formatDate(quantityDTO.expireDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
|
||||
}, mYear, mMonth, mDay);
|
||||
datePickerDialog.show();
|
||||
};
|
||||
|
||||
textInputLayout.setOnClickListener(v -> onTextClicked.run());
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static void showQuantityErrorDialog(Context mContext){
|
||||
|
||||
String errorMessage = mContext.getText(R.string.wrong_quantity_input).toString();
|
||||
|
||||
DialogSimpleMessageHelper.makeErrorDialog(mContext, new SpannableString(errorMessage), null, null).show();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -3,6 +3,8 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity;
|
||||
import android.graphics.Color;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
@ -12,6 +14,9 @@ import it.integry.integrywmsnative.core.di.BindableString;
|
||||
public class QuantityDTO {
|
||||
|
||||
public BindableString batchLot = new BindableString();
|
||||
public BindableString expireDateString = new BindableString();
|
||||
|
||||
public Date expireDate = null;
|
||||
|
||||
public BindableFloat numCnf = new BindableFloat();
|
||||
public BindableFloat qtaCnf = new BindableFloat();
|
||||
|
||||
@ -156,22 +156,75 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<android.support.design.widget.TextInputLayout
|
||||
<android.support.constraint.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:enabled="@{quantityViewModel.canPartitaMagBeChanged}"
|
||||
app:hintTextAppearance="@style/hint_text">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<android.support.design.widget.TextInputEditText
|
||||
android:id="@+id/input_partita_mag"
|
||||
android:layout_width="match_parent"
|
||||
<android.support.constraint.Guideline
|
||||
android:id="@+id/guideline_partita_data"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="textNoSuggestions"
|
||||
android:hint="@string/batch_lot"
|
||||
app:binding="@{quantityViewModel.batchLot}"/>
|
||||
</android.support.design.widget.TextInputLayout>
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintGuide_percent="0.50"/>
|
||||
|
||||
<android.support.design.widget.TextInputLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:enabled="@{quantityViewModel.canPartitaMagBeChanged}"
|
||||
app:hintTextAppearance="@style/hint_text"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/guideline_partita_data"
|
||||
android:nextFocusRight="@+id/input_data_scad">
|
||||
|
||||
<android.support.design.widget.TextInputEditText
|
||||
android:id="@+id/input_partita_mag"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="textNoSuggestions"
|
||||
android:hint="@string/batch_lot"
|
||||
app:binding="@{quantityViewModel.batchLot}"/>
|
||||
|
||||
|
||||
</android.support.design.widget.TextInputLayout>
|
||||
|
||||
|
||||
<android.support.v7.widget.AppCompatTextView
|
||||
android:id="@+id/input_data_scad"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="11 nov 2018"
|
||||
android:textSize="16sp"
|
||||
android:enabled="@{quantityViewModel.shouldAskDataScad.get()}"
|
||||
app:binding="@{quantityViewModel.expireDateString}"
|
||||
app:layout_constraintStart_toEndOf="@id/guideline_partita_data"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"/>
|
||||
|
||||
|
||||
<!--<android.support.design.widget.TextInputLayout-->
|
||||
<!--android:id="@+id/input_data_scad_layout"-->
|
||||
<!--android:layout_width="0dp"-->
|
||||
<!--android:layout_height="wrap_content"-->
|
||||
<!--android:enabled="@{quantityViewModel.shouldAskDataScad.get()}"-->
|
||||
<!--app:hintTextAppearance="@style/hint_text"-->
|
||||
<!--app:layout_constraintStart_toEndOf="@id/guideline_partita_data"-->
|
||||
<!--app:layout_constraintEnd_toEndOf="parent">-->
|
||||
|
||||
<!--<android.support.design.widget.TextInputEditText-->
|
||||
<!--android:id="@+id/input_data_scad"-->
|
||||
<!--android:layout_width="match_parent"-->
|
||||
<!--android:layout_height="wrap_content"-->
|
||||
<!--android:inputType="textNoSuggestions"-->
|
||||
<!--android:hint="@string/expire_date"-->
|
||||
<!--app:binding="@{quantityViewModel.expireDate}"/>-->
|
||||
|
||||
|
||||
<!--</android.support.design.widget.TextInputLayout>-->
|
||||
|
||||
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@ -84,6 +84,7 @@
|
||||
<string name="to_dispatch">Da evadere</string>
|
||||
|
||||
<string name="batch_lot">Lotto</string>
|
||||
<string name="expire_date">Data scad</string>
|
||||
<string name="num_pcks">Num cnf</string>
|
||||
<string name="qty_x_pck"><![CDATA[Qtà x cnf]]></string>
|
||||
<string name="tot_qty"><![CDATA[Qtà tot]]></string>
|
||||
|
||||
@ -90,6 +90,7 @@
|
||||
<string name="to_dispatch">To dispatch</string>
|
||||
|
||||
<string name="batch_lot">Batch lot</string>
|
||||
<string name="expire_date">Expire date</string>
|
||||
<string name="num_pcks">Pcks num</string>
|
||||
<string name="qty_x_pck">Qty x pck</string>
|
||||
<string name="tot_qty">Tot qty</string>
|
||||
|
||||
@ -1,9 +1,8 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.2.71'
|
||||
ext{
|
||||
kotlin_version = '1.2.71'
|
||||
kotlin_version = '1.3.0'
|
||||
gradle_version = '3.2.1'
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user