99import android .widget .AutoCompleteTextView ;
1010import android .widget .Button ;
1111import android .widget .EditText ;
12+ import android .widget .LinearLayout ;
1213import android .widget .ListView ;
1314import android .widget .SimpleAdapter ;
15+ import android .widget .TextView ;
1416
17+ import org .json .JSONArray ;
18+ import org .json .JSONException ;
19+ import org .json .JSONObject ;
1520import org .openimis .imisclaims .tools .Log ;
1621
22+ import java .util .ArrayList ;
1723import java .util .HashMap ;
1824
1925public class AddServices extends ImisActivity {
20- ListView lvServices ;
21- EditText etSQuantity , etSAmount ;
26+ ListView lvServices , listServices ;
27+ TextView tvCode , tvName ;
28+ LinearLayout llSService ;
29+ EditText etSQuantity , etSName , etsSQuantity ;
30+ LinearLayout .LayoutParams layoutParams ;
31+ public static EditText etSAmount ;
32+ public static float amount ;
2233 Button btnAdd ;
2334 AutoCompleteTextView etServices ;
2435 int Pos ;
2536 HashMap <String , String > oService ;
2637 SimpleAdapter alAdapter ;
38+ CustomAdapter ssAdapterServicesItems ;
39+ float sServicePrice ;
40+ public ArrayList <EditModel > editModelArrayListServices ;
41+ public static ArrayList <HashMap <String , String >> lvSServiceList ;
42+ public static ArrayList <HashMap <String , String >> lvSItemList ;
43+ public static String packageType ;
44+ public static String manualPrice ;
2745
2846 @ Override
2947 public void onCreate (Bundle savedInstanceState ) {
@@ -34,10 +52,20 @@ public void onCreate(Bundle savedInstanceState) {
3452 actionBar .setTitle (getResources ().getString (R .string .app_name_claim ));
3553 }
3654
55+ lvSServiceList = new ArrayList <>();
56+ lvSItemList = new ArrayList <>();
57+
3758 lvServices = findViewById (R .id .lvServices );
3859 etSQuantity = findViewById (R .id .etSQuantity );
60+ etSQuantity .setKeyListener (null );
3961 etSAmount = findViewById (R .id .etSAmount );
62+ etSAmount .setKeyListener (null );
63+ etSName = findViewById (R .id .etSName );
64+ etSName .setKeyListener (null );
4065 etServices = findViewById (R .id .etService );
66+ llSService = findViewById (R .id .llSService );
67+ layoutParams = new LinearLayout .LayoutParams
68+ (LinearLayout .LayoutParams .MATCH_PARENT , 300 );
4169 btnAdd = findViewById (R .id .btnAdd );
4270
4371 alAdapter = new SimpleAdapter (AddServices .this , ClaimActivity .lvServiceList , R .layout .lvitem ,
@@ -53,6 +81,7 @@ public void onCreate(Bundle savedInstanceState) {
5381 disableView (btnAdd );
5482 } else {
5583 ServiceAdapter serviceAdapter = new ServiceAdapter (this , sqlHandler );
84+ amount = 0 ;
5685 etServices .setAdapter (serviceAdapter );
5786 etServices .setThreshold (1 );
5887 etServices .setOnItemClickListener ((parent , view , position , l ) -> {
@@ -63,13 +92,79 @@ public void onCreate(Bundle savedInstanceState) {
6392 final int descColumnIndex = cursor .getColumnIndexOrThrow ("Name" );
6493 String Code = cursor .getString (itemColumnIndex );
6594 String Name = cursor .getString (descColumnIndex );
95+ packageType = sqlHandler .getPackageType (Code );
96+ String id = sqlHandler .getServiceId (Code );
97+ manualPrice = sqlHandler .getManualPrice (Code );
6698
6799 oService = new HashMap <>();
68100 oService .put ("Code" , Code );
69101 oService .put ("Name" , Name );
102+ oService .put ("PackageType" , packageType );
70103
71104 etSQuantity .setText ("1" );
72105 etSAmount .setText (sqlHandler .getServicePrice (Code ));
106+ etSName .setText (sqlHandler .getServiceName (Code ));
107+ if (!packageType .equals ("S" )) {
108+ if (manualPrice .equals ("0" )){
109+ etSAmount .setText ("" );
110+ sServicePrice = 0 ;
111+ }
112+ try {
113+ JSONArray subServices = sqlHandler .getSubServicesIds (id );
114+ JSONArray subServiceArr = new JSONArray ();
115+ for (int i = 0 ; i < subServices .length (); i ++) {
116+ JSONObject objService = sqlHandler .getService (subServices .getJSONObject (i ).getString ("ServiceId" ));
117+ objService .put ("QuantityMax" , subServices .getJSONObject (i ).getString ("Quantity" ));
118+ objService .put ("Price" , subServices .getJSONObject (i ).getString ("Price" ));
119+ subServiceArr .put (objService );
120+ }
121+ JSONArray subItemIds = sqlHandler .getSubItemsId (id );
122+ JSONArray subItemArr = new JSONArray ();
123+ for (int i = 0 ; i < subItemIds .length (); i ++) {
124+ JSONObject objItem = sqlHandler .getItem (subItemIds .getJSONObject (i ).getString ("ItemId" ));
125+ objItem .put ("QuantityMax" , subItemIds .getJSONObject (i ).getString ("Quantity" ));
126+ objItem .put ("Price" , subItemIds .getJSONObject (i ).getString ("Price" ));
127+ subItemArr .put (objItem );
128+ }
129+ for (int i = 0 ; i < subServiceArr .length (); i ++) {
130+ JSONObject obj = subServiceArr .getJSONObject (i );
131+ HashMap <String , String > sService = new HashMap <>();
132+ sService .put ("Code" , obj .getString ("Code" ));
133+ sService .put ("Name" , obj .getString ("Name" ));
134+ sService .put ("Price" , obj .getString ("Price" ));
135+ sService .put ("Quantity" , "0" );
136+ sService .put ("QtyMax" , obj .getString ("QuantityMax" ));
137+ lvSServiceList .add (sService );
138+ }
139+ for (int i = 0 ; i < subItemArr .length (); i ++) {
140+ JSONObject obj = subItemArr .getJSONObject (i );
141+ HashMap <String , String > sItem = new HashMap <>();
142+ sItem .put ("Code" , obj .getString ("Code" ));
143+ sItem .put ("Name" , obj .getString ("Name" ));
144+ sItem .put ("Price" , obj .getString ("Price" ));
145+ sItem .put ("Quantity" , "0" );
146+ sItem .put ("QtyMax" , obj .getString ("QuantityMax" ));
147+ lvSItemList .add (sItem );
148+ }
149+ editModelArrayListServices = populateListServicesItems ();
150+ ssAdapterServicesItems = new CustomAdapter (AddServices .this , editModelArrayListServices );
151+ TextView textServices = new TextView (AddServices .this );
152+ textServices .setText ("Sub-Services & Items" );
153+ textServices .setPadding (0 , 0 , 0 , 10 );
154+ textServices .setTextSize (18 );
155+ listServices = new ListView (AddServices .this );
156+ if ((lvSServiceList .size () + lvSItemList .size ()) > 4 ) {
157+ listServices .setLayoutParams (layoutParams );
158+ }
159+ listServices .setAdapter (ssAdapterServicesItems );
160+ llSService .addView (textServices );
161+ llSService .addView (listServices );
162+ } catch (JSONException e ) {
163+ e .printStackTrace ();
164+ }
165+ } else {
166+ llSService .removeAllViews ();
167+ }
73168 }
74169 });
75170
@@ -79,6 +174,10 @@ public void onTextChanged(CharSequence s, int start, int before, int count) {
79174 btnAdd .setEnabled (s != null && s .toString ().trim ().length () != 0
80175 && etSQuantity .getText ().toString ().trim ().length () != 0
81176 && etSAmount .getText ().toString ().trim ().length () != 0 );
177+
178+ llSService .removeAllViews ();
179+ lvSServiceList .clear ();
180+ lvSItemList .clear ();
82181 }
83182
84183 @ Override
@@ -128,15 +227,33 @@ public void afterTextChanged(Editable s) {
128227 btnAdd .setOnClickListener (v -> {
129228 try {
130229
230+ llSService .removeAllViews ();
231+
131232 if (oService == null ) return ;
132233
133234 String Amount , Quantity ;
134235
135236 HashMap <String , String > lvService = new HashMap <>();
136237 lvService .put ("Code" , oService .get ("Code" ));
137238 lvService .put ("Name" , oService .get ("Name" ));
138- Amount = etSAmount .getText ().toString ();
139- lvService .put ("Price" , Amount );
239+ lvService .put ("PackageType" ,oService .get ("PackageType" ));
240+ if (lvSServiceList .size () != 0 ) {
241+ float amount = Float .valueOf (etSAmount .getText ().toString ());
242+ JSONArray subServiceItems = new JSONArray ();
243+ for (int i = 0 ; i < CustomAdapter .editModelArrayList .size (); i ++) {
244+ JSONObject sService = new JSONObject ();
245+ sService .put ("Code" , CustomAdapter .editModelArrayList .get (i ).getCode ());
246+ sService .put ("Quantity" , CustomAdapter .editModelArrayList .get (i ).getQty ());
247+ sService .put ("Price" , CustomAdapter .editModelArrayList .get (i ).getPrice ());
248+ sService .put ("Type" , CustomAdapter .editModelArrayList .get (i ).getType ());
249+ subServiceItems .put (sService );
250+ }
251+ lvService .put ("Price" , String .valueOf (amount ));
252+ lvService .put ("SubServicesItems" , String .valueOf (subServiceItems ));
253+ } else {
254+ Amount = etSAmount .getText ().toString ();
255+ lvService .put ("Price" , Amount );
256+ }
140257 if (etSQuantity .getText ().toString ().length () == 0 ) Quantity = "1" ;
141258 else Quantity = etSQuantity .getText ().toString ();
142259 lvService .put ("Quantity" , Quantity );
@@ -147,6 +264,7 @@ public void afterTextChanged(Editable s) {
147264 etServices .setText ("" );
148265 etSAmount .setText ("" );
149266 etSQuantity .setText ("" );
267+ etSName .setText ("" );
150268
151269 } catch (Exception e ) {
152270 Log .d ("AddLvError" , e .getMessage ());
@@ -185,4 +303,29 @@ private void HideAllDeleteButtons() {
185303 Delete .setVisibility (View .GONE );
186304 }
187305 }
306+
307+ private ArrayList <EditModel > populateListServicesItems () {
308+ ArrayList <EditModel > list = new ArrayList <>();
309+ for (int i = 0 ; i < lvSServiceList .size (); i ++) {
310+ EditModel editModel = new EditModel ();
311+ editModel .setCode (lvSServiceList .get (i ).get ("Code" ));
312+ editModel .setName (lvSServiceList .get (i ).get ("Name" ));
313+ editModel .setQty (lvSServiceList .get (i ).get ("Quantity" ));
314+ editModel .setPrice (lvSServiceList .get (i ).get ("Price" ));
315+ editModel .setQtyMax (lvSServiceList .get (i ).get ("QtyMax" ));
316+ editModel .setType ("S" );
317+ list .add (editModel );
318+ }
319+ for (int i = 0 ; i < lvSItemList .size (); i ++) {
320+ EditModel editModel = new EditModel ();
321+ editModel .setCode (lvSItemList .get (i ).get ("Code" ));
322+ editModel .setName (lvSItemList .get (i ).get ("Name" ));
323+ editModel .setQty (lvSItemList .get (i ).get ("Quantity" ));
324+ editModel .setPrice (lvSItemList .get (i ).get ("Price" ));
325+ editModel .setQtyMax (lvSItemList .get (i ).get ("QtyMax" ));
326+ editModel .setType ("I" );
327+ list .add (editModel );
328+ }
329+ return list ;
330+ }
188331}
0 commit comments