From 057130de40a9c4c1217b97dad39ab291868e3fe0 Mon Sep 17 00:00:00 2001 From: patrick Date: Fri, 19 Jul 2019 17:56:56 +1000 Subject: [PATCH] checking missing tos and rate --- Xero.php | 26 ++++++++++---------- css/bts_timesheet.css | 4 ++++ html/job.html | 2 +- js/bts_timesheet.js | 55 ++++++++++++++++++++++++++++++++++--------- 4 files changed, 63 insertions(+), 24 deletions(-) diff --git a/Xero.php b/Xero.php index 21e0d5b..f53f4a9 100644 --- a/Xero.php +++ b/Xero.php @@ -321,18 +321,20 @@ class Xero { // "IsReportableAsW1": true, // "UpdatedDateUTC": "2019-03-16T13:18:19+00:00", // "CurrentRecord": false - $payitem_options[]= array( - 'EarningsRateID' => $e->getEarningsRateID(), - 'Name'=> $e->getName(), - 'EarningsType'=> $e->getEarningstype(), - 'RatePerUnit' => $e->getRatePerUnit(), - 'RateType' => $e->getRateType(), - 'AccountCode' => $e->getAccountCode(), - "Multiplier"=> $e->getMultiplier(), - "IsExemptFromTax" => $e->getIsExemptFromTax(), - "IsExemptFromSuper"=> $e->getIsExemptFromSuper(), - "AccrueLeave" => $e->getAccrueLeave(), - ); + if ($e->getCurrentRecord() == "true"){ + $payitem_options[]= array( + 'EarningsRateID' => $e->getEarningsRateID(), + 'Name'=> $e->getName(), + 'EarningsType'=> $e->getEarningstype(), + 'RatePerUnit' => $e->getRatePerUnit(), + 'RateType' => $e->getRateType(), + 'AccountCode' => $e->getAccountCode(), + "Multiplier"=> $e->getMultiplier(), + "IsExemptFromTax" => $e->getIsExemptFromTax(), + "IsExemptFromSuper"=> $e->getIsExemptFromSuper(), + "AccrueLeave" => $e->getAccrueLeave(), + ); + } } update_option('bts_payitem_earnings_rate', $payitem_options); update_option('bts_payitem_last_sync', time()); diff --git a/css/bts_timesheet.css b/css/bts_timesheet.css index 161c9f2..2f6c9e1 100644 --- a/css/bts_timesheet.css +++ b/css/bts_timesheet.css @@ -868,4 +868,8 @@ div.divTable.invalidjob{ border-left: 2px solid red; border-right: 2px solid red; } + +div.divTable .invalid{ + background-color:yellow; +} /* end of div table */ \ No newline at end of file diff --git a/html/job.html b/html/job.html index bb51ed4..3e7a506 100644 --- a/html/job.html +++ b/html/job.html @@ -21,7 +21,7 @@
-
+
diff --git a/js/bts_timesheet.js b/js/bts_timesheet.js index 860c157..a91a6f0 100644 --- a/js/bts_timesheet.js +++ b/js/bts_timesheet.js @@ -351,6 +351,12 @@ load_data(data) { + //save to html element + this.data = data; + this.el.data({job:this, data:data}); + + //draw GUI + this.clear_err_msg(); this.set_job_id(data.id); this.set_tos(data.tos); this.set_start(data.start); @@ -360,10 +366,8 @@ this.set_client(data.client); this.set_ack(data.ack); this.set_rating(data.rating); - //save to html element - this.data = data; - this.el.data({job:this, data:data}); + //draw GUI by other this.mark_dirty_on_new_record(data); this.mark_week_color(); this.validate(); //also triggers mark errors @@ -513,13 +517,14 @@ d.addClass('blink_me'); setTimeout(function(){ d.removeClass('blink_me'); + d.removeClass('saved'); },1000); } mark_saved() { var d = this.el.find('.bsave'); - + d.addClass('blink_me'); setTimeout(function(){ d.removeClass('blink_me'); @@ -574,10 +579,11 @@ validate() { - this.clear_err_msg(); - var ok = this.validate_start() && - this.validate_finish() && - this.validate_rate(); + var ok_time = this.validate_start() && + this.validate_finish(); //finish might not be executed, if start is wrong + var ok_tos = this.validate_tos(); //make sure this validate is executed; + var ok_rate = this.validate_rate() ; //make sure this validate is executed + var ok = ok_time && ok_tos && ok_rate; if (ok){ this.el.removeClass('invalidjob'); }else{ @@ -624,11 +630,30 @@ this.mark_rate_invalid(); return false; } + if (this.get_rate() != this.data.rate){ + this.set_err_msg_rate('rate@Xero inactive ' + this.data.rate); + this.mark_rate_invalid(); + this.mark_dirty(); + return false; + } this.set_err_msg_rate(''); this.mark_rate_valid(); return true; } + validate_tos(){ + if (this.get_tos() != this.data.tos){ + this.set_err_msg_tos('require NDIS ' + this.data.tos); + this.mark_tos_invalid(); + this.mark_dirty(); + console.log('tos mark dirty'); + return false; + } + this.set_err_msg_tos(''); + this.mark_tos_valid(); + return true; + } + clear_err_msg(){ this.el.find('.divTableRow.errmsg > div').html(''); } @@ -648,8 +673,17 @@ { this.el.find('div.bsave_err').html(str); } + set_err_msg_tos(str) + { + this.el.find('div.btos_err').html(str); + } - + mark_tos_valid(){ + this.el.find('div.btos select').removeClass('invalid'); + } + mark_tos_invalid(){ + this.el.find('div.btos select').addClass('invalid'); + } mark_start_valid(){ this.el.find('div.bstart input').removeClass('invalid'); } @@ -1026,6 +1060,7 @@ $('div.sheettitle h1').click(function(){ reset_title_to_today(); + load_timesheet(); }); function reset_title_to_today(){ @@ -1137,9 +1172,7 @@ } }); - console.log('filter worksspace'); filter_workspace(staffs, clients); - console.log('filter by weeks'); filter_workspace_by_weeks(); debounced_calculate(); }