/** Loads detailed tax payer info */ public void loadInfo() { // try to connect try { // Get TaxPayer Income first: HTTPConnection connection = new HTTPConnection(storage.getServerURL()); JSONObject response = connection.connectJSON(Engine.getTaxPayerInfo(TaxPayerID)); storage.setLastServerResponse(response.toString()); if (!response.getString("result").equals("OK")) { throw new Exception("Invalid response from server = " + response.getString("data")); } // read results JSONObject data = response.getJSONArray("data").getJSONObject(0); // Fill the activity with results TaxIncome = data.getDouble("Income"); tbTaxYearIncome.setText(String.valueOf(TaxIncome) + " \u20AC"); // Get Tax stats: response = connection.connectJSON(Engine.TaxProgramGrid(TaxYearID, TaxPayerID)); storage.setLastServerResponse(response.toString()); // retrieve the array of items array = response.getJSONArray("data"); recalculateTaxRate(); // only after array is loaded - show the list adapter = new TaxYearProgramsAdapter(this); tableTaxProgramManage.setAdapter(adapter); } catch (Exception ex) { DKDialog.ShowMessage( this, Translate.translate("Error"), Translate.translate("Connection failed: " + ex.getMessage()), Translate.translate("OK"), Translate.translate("Cancel")); LogWriter.writeException(this, ex.getMessage(), ex); storage.setLastServerResponse(ex.toString()); } }
public void work() { // get the first institution if (total < _selected.size()) { int id = _selected.get(total); double firstPrice = 0; double currentPrice = 0; double avgPriceForProgram = (TaxIncome / _selected.size()) * 0.2; // this is a price that is calculate for programs, average 20% of income // start negotiating try { // Get initial price of program LogWriter.writeInfo( "Agent -> Get program price: avgPerProgram = " + avgPriceForProgram + ", program ID = " + id); HTTPConnection connection = new HTTPConnection(storage.getServerURL()); JSONObject response = connection.connectJSON(Engine.AgentRequestProgramPrice(_taxYearID, _taxPayerID, id)); storage.setLastServerResponse(response.toString()); if (!response.getString("result").equals("OK")) { throw new Exception("Invalid response from server = " + response.getString("data")); } // read results JSONObject data = response.getJSONObject("data"); int type = data.getInt("Type"); currentPrice = data.getDouble("Price"); firstPrice = currentPrice; double lowestPrice = firstPrice; double newPrice = 0; if (type == 1) { // this is final offer - we need to set the result - and offer to client LogWriter.writeInfo("Agent -> Final offer = " + currentPrice + " program ID = " + id); setProgramPrice(id, currentPrice); } else { double tries = 0.5; while (true) { if (type == 1) { // this is final offer - we need to set the result - and offer to client LogWriter.writeInfo( "Agent -> Final offer = " + currentPrice + " program ID = " + id); setProgramPrice(id, currentPrice); break; } // we can try to continue more - to get a better deal if it is more than we want if (newPrice > firstPrice) { // obiously we cannot get betterp rice LogWriter.writeInfo( "Agent -> Cannot go higher = " + lowestPrice + " program ID = " + id); setProgramPrice(id, lowestPrice); break; } else if (currentPrice > avgPriceForProgram) { // Get initial price of program connection = new HTTPConnection(storage.getServerURL()); newPrice = avgPriceForProgram * 0.1 + avgPriceForProgram * (tries); LogWriter.writeInfo( "Agent -> Askin better price = " + newPrice + " program ID = " + id); // lowe the price by 90% response = connection.connectJSON( Engine.AgentRequestProgramLowerPrice( _taxYearID, _taxPayerID, id, newPrice)); storage.setLastServerResponse(response.toString()); if (!response.getString("result").equals("OK")) { throw new Exception( "Invalid response from server = " + response.getString("data")); } // read results data = response.getJSONObject("data"); type = data.getInt("Type"); currentPrice = data.getDouble("Price"); LogWriter.writeInfo( "Agent -> currentPrice = " + currentPrice + " lowestPrice = " + lowestPrice + " program ID = " + id); if (currentPrice < lowestPrice) { lowestPrice = currentPrice; } tries += 0.1; } else { // this is ok, we can accept that LogWriter.writeInfo( "Agent -> Best offer = " + currentPrice + " program ID = " + id); setProgramPrice(id, currentPrice); break; } } } } catch (Exception ex) { // this will exit Message msg = mHandler.obtainMessage(); Bundle b = new Bundle(); b.putString("error", "Connection failed: " + ex.getMessage()); msg.setData(b); mHandler.sendMessage(msg); LogWriter.writeException(TaxProgramsManageActivity.this, ex.getMessage(), ex); } } }
public void onClick(View arg0) { if (btnCancel.getVisibility() == View.VISIBLE) { // Confirmation of existing programs try { for (int i = 0; i < array.length(); i++) { JSONObject object = (JSONObject) array.get(i); if (object.getInt("IsSelected") > 0) { // Get TaxPayer Income first: HTTPConnection connection = new HTTPConnection(storage.getServerURL()); JSONObject response = connection.connectJSON( Engine.ApproveProgramPrice( TaxYearID, TaxPayerID, object.getInt("ID"), object.getDouble("TaxRate"))); storage.setLastServerResponse(response.toString()); if (!response.getString("result").equals("OK")) { throw new Exception( "Invalid response from server = " + response.getString("data")); } // read results int result = (Integer) response.getInt("data"); } } Intent resultIntent = new Intent(); setResult(Activity.RESULT_OK, resultIntent); TaxProgramsManageActivity.this.finish(); /* DKDialog.ShowMessage( TaxProgramsManageActivity.this, Translate.translate("Thank you") , Translate.translate("All programs have been confirmed!"), Translate.translate("OK"), Translate.translate("Cancel")); */ } catch (Exception ex) { DKDialog.ShowMessage( TaxProgramsManageActivity.this, Translate.translate("Error"), Translate.translate("Connection failed: " + ex.getMessage()), Translate.translate("OK"), Translate.translate("Cancel")); LogWriter.writeException(TaxProgramsManageActivity.this, ex.getMessage(), ex); storage.setLastServerResponse(ex.toString()); } } else { // 1-st submit selected = new ArrayList<Integer>(); try { for (int i = 0; i < array.length(); i++) { JSONObject object = array.getJSONObject(i); if (object.getInt("IsSelected") > 0) { selected.add(object.getInt("ID")); } else { // clear the price object.put("TaxRate", 0.0); } } if (selected.size() == 0) { DKDialog.ShowMessage( TaxProgramsManageActivity.this, Translate.translate("Error"), Translate.translate("Nothing to submit, no programs selected!"), Translate.translate("OK"), Translate.translate("Cancel")); } else { typeBar = 1; showDialog(typeBar); } } catch (Exception ex) { DKDialog.ShowMessage( TaxProgramsManageActivity.this, Translate.translate("Error"), Translate.translate("Failed to count selected values! " + ex.getMessage()), Translate.translate("OK"), Translate.translate("Cancel")); LogWriter.writeException(TaxProgramsManageActivity.this, ex.getMessage(), ex); } } }