timesheet source code
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

271 rinda
11KB

  1. <?php
  2. namespace Biukop;
  3. class XeroOauth2ShortCode
  4. {
  5. private $oauth2;
  6. public function __construct($oauth2){
  7. $this->oauth2 = $oauth2;
  8. add_shortcode('xero_org_name', array($this, 'xero_org_name'));
  9. add_shortcode('xero_org_contacts', array($this, 'xero_org_contacts'));
  10. add_shortcode('xero_org_invoices', array($this, 'xero_org_invoices'));
  11. add_shortcode('xero_org_pay_items', array($this, 'xero_org_pay_items'));
  12. add_shortcode('xero_org_employees', array($this, 'xero_org_employees'));
  13. add_shortcode('xero_org_clients', array($this, 'xero_org_clients'));
  14. add_shortcode('xero_org_payroll_calendar', array($this, 'xero_org_payroll_calendar'));
  15. }
  16. public function xero_org_name()
  17. {
  18. ini_set('display_errors', 'On');
  19. $apiInstance = $this->oauth2->get_accounting_instance();
  20. $apiResponse = $apiInstance->getOrganisations($this->xeroTenantId);
  21. return 'Organisation Name: <b> ' . $apiResponse->getOrganisations()[0]->getName() . "</b> ";
  22. }
  23. public function xero_org_contacts()
  24. {
  25. ini_set('display_errors', 'On');
  26. $apiInstance = $this->oauth2->get_accounting_instance();
  27. $apiResponse = $apiInstance->getContacts($this->xeroTenantId);
  28. $contacts = $apiResponse->getContacts();
  29. $message = "<table> ";
  30. $message .= "<tr> <td> # </td>
  31. <td> unique-id </td>
  32. <td> name </td>
  33. <td> Supplier </td>
  34. <td> Customer </td>
  35. <td> Group </td>
  36. <td> Status </td> </tr> ";
  37. $count = 1;
  38. foreach ($contacts as $c) {
  39. $group = "";
  40. foreach ($c->getContactGroups() as $g) {
  41. $group .= $g->getName() . " - " . $g->getStatus() . "<br>";
  42. }
  43. $message .= "<tr> <td>" . $count++ . "</td> " .
  44. "<td> " . $c->getContactId() . "</td> " .
  45. "<td> " . $c->getName() . "</td> " .
  46. "<td> " . ($c->getIsSupplier() ? "yes" : " - ") . "</td> " .
  47. "<td> " . ($c->getIsCustomer() ? "yes" : " - ") . "</td> " .
  48. "<td> " . $group . "</td> " .
  49. "<td> " . $c->getContactStatus() . "</td> " .
  50. "</tr>";
  51. }
  52. $message .= "</table>";
  53. return $message;
  54. }
  55. public function xero_org_invoices() {
  56. ini_set('display_errors', 'On');
  57. $apiInstance = $this->oauth2->get_accounting_instance();
  58. $apiResponse = $apiInstance->getInvoices($this->xeroTenantId);
  59. $invoices = $apiResponse->getInvoices();
  60. $message = "<table> ";
  61. $message .= "<tr> <td> # </td>
  62. <td> invoice num</td>
  63. <td> date </td>
  64. <td> contact </td>
  65. <td> amount </td>
  66. <td> Type </td>
  67. <td> Status </td> </tr> ";
  68. $count = 1;
  69. foreach ( $invoices as $c) {
  70. $strDate = "";
  71. $d = $c->getDate();
  72. if ( $d != null) {
  73. $da = $c->getDateAsDate();
  74. $strDate = $da->format("Y-m-d");
  75. } else {
  76. $strDate = $d;
  77. }
  78. $message .= "<tr> <td>" . $count ++ . "</td> " .
  79. "<td> " . $c->getInvoiceNumber() . "</td> " .
  80. "<td> " . $strDate . "</td> " .
  81. "<td> " . $c->getContact()->getName() . "</td> " .
  82. "<td> " . $c->getTotal() . "</td> " .
  83. "<td> " . $c->getType() . "</td> " .
  84. "<td> " . $c->getStatus() . "</td> " .
  85. "</tr>";
  86. }
  87. $message .= "</table>";
  88. return $message;
  89. }
  90. public function xero_org_pay_items(){
  91. ini_set('display_errors', 'On');
  92. $api = $this->oauth2->get_payroll_au_instance();
  93. $xeroTenantId = $this->oauth2->xeroTenantId;
  94. //$xeroTenantId = "e23fd416-3b66-43e9-b908-97fbefa24eb8"; // demo company;
  95. //$xeroTenantId = "4e2521ae-83e6-4895-aa90-b20aa0825ce1"; // Acaresydney ;
  96. $ifModifiedSince = null;
  97. $where = null; // "Status==\"ACTIVE\"";
  98. $order = null; // "EmailAddress%20DESC";
  99. $page = 1;
  100. // $result = null;
  101. try {
  102. $result = $api->getPayItems ($xeroTenantId, $ifModifiedSince, $where, $order, $page);
  103. $rates = $result->getPayItems()->getEarningsRates();
  104. $message = "<table> ";
  105. $message .= "<tr> <td> # </td>
  106. <td> Name </td>
  107. <td> EarningsType </td>
  108. <td> RateType </td>
  109. <td> AccountCode </td>
  110. <td> Multiplier </td>
  111. <td> IsExemptFromTax </td>
  112. <td> IsExemptFromSuper </td>
  113. <td> AccrueLeave </td>
  114. <td> IsReportableAsW1 </td>
  115. <td> UpdatedDateUTC </td>
  116. <td> CurrentRecord </td> </tr> ";
  117. $count = 1;
  118. foreach ( $rates as $r) {
  119. $message .= "<tr> <td>" . $r->getEarningsRateId() . "</td> " .
  120. "<td> " . $r->getName() . "</td> " .
  121. "<td> " . $r->getEarningsType() . "</td> " .
  122. "<td> " . $r->getRateType() . "</td> " .
  123. "<td> " . $r->getAccountCode() . "</td> " .
  124. "<td> " . $r->getTypeOfUnits() . "</td> " .
  125. "<td> " . $r->getRatePerUnit() . "</td> " .
  126. "<td> " . $r->getIsExemptFromTax() . "</td> " .
  127. "<td> " . $r->getIsExemptFromSuper() . "</td> " .
  128. "<td> " . $r->getIsReportableAsW1() . "</td> " .
  129. "<td> " . $r->getUpdatedDateUtc() . "</td> " .
  130. "<td> " . $r->getCurrentRecord() . "</td> " .
  131. "</tr>";
  132. }
  133. $message .= "</table>";
  134. return $message;
  135. } catch (\Exception $e) {
  136. echo 'Exception when calling PayrollAuApi->getPayItems: ', $e->getMessage(), PHP_EOL;
  137. return;
  138. }
  139. }
  140. public function xero_org_employees(){
  141. ini_set('display_errors', 'On');
  142. $api = $this->oauth2->get_payroll_au_instance();
  143. $xeroTenantId = $this->oauth2->xeroTenantId;
  144. //$xeroTenantId = "e23fd416-3b66-43e9-b908-97fbefa24eb8"; // demo company;
  145. //$xeroTenantId = "4e2521ae-83e6-4895-aa90-b20aa0825ce1"; // Acaresydney ;
  146. $ifModifiedSince = date("M d Y H:i:s", strtotime("-30 days"));
  147. $where = "Status==\"ACTIVE\"";
  148. $order = null; // "EmailAddress%20DESC";
  149. $page = 1;
  150. // $result = null;
  151. try {
  152. $result = $api->getEmployees($xeroTenantId,$ifModifiedSince,$where,$order,$page);
  153. $employees = $result->getEmployees();
  154. $message = "<table> ";
  155. $message .= "<tr> <td> # </td>
  156. <td> First </td>
  157. <td> Last </td>
  158. <td> Status </td>
  159. <td> Email </td>
  160. <td> DOB </td>
  161. <td> Gender </td>
  162. <td> Phone </td>
  163. <td> Mobile </td>
  164. <td> Start </td>
  165. <td> Group </td>
  166. </tr> ";
  167. $count = 1;
  168. foreach ($employees as $r){
  169. $message .= "<tr> <td>" . $count . "</td> " .
  170. "<td> " . $r->getFirstName() . "</td> " .
  171. "<td> " . $r->getLastName() . "</td> " .
  172. "<td> " . $r->getStatus() . "</td> " .
  173. "<td> " . $r->getEmail() . "</td> " .
  174. "<td> " . $r->getDateOfBirthAsDate()->format("M d Y") . "</td> " .
  175. "<td> " . $r->getGender() . "</td> " .
  176. "<td> " . $r->getPhone() . "</td> " .
  177. "<td> " . $r->getMobile() . "</td> " .
  178. "<td> " . $r->getStartDateAsDate()->format("M d Y") . "</td> " .
  179. "<td> " . $r->getEmployeeGroupName() . "</td> " .
  180. "</tr>";
  181. $count ++;
  182. }
  183. $message .= "</table>";
  184. return $message;
  185. } catch (\Exception $e) {
  186. echo 'Exception when calling PayrollAuApi->getPayItems: ', $e->getMessage(), PHP_EOL;
  187. return;
  188. }
  189. }
  190. public function xero_org_clients(){
  191. ini_set('display_errors', 'On');
  192. try {
  193. $contacts = $this->oauth2->getClients();
  194. $message = "<table> ";
  195. $message .= "<tr> <td> # </td>
  196. <td> Name </td>
  197. <td> Last </td>
  198. <td> Status </td>
  199. <td> Email </td>
  200. <td> AccountNumber </td>
  201. <td> Addresses </td>
  202. </tr> ";
  203. $count = 1;
  204. foreach ($contacts as $r){
  205. $message .= "<tr> <td>" . $count . " - ". $r->getContactID() . "</td> " .
  206. "<td> " . $r->getFirstName() . "</td> " .
  207. "<td> " . $r->getLastName() . "</td> " .
  208. "<td> " . $r->getContactStatus() . "</td> " .
  209. "<td> " . $r->getEmailAddress() . "</td> " .
  210. "<td> " . $r->getAccountNumber() . "</td> " .
  211. "<td> " . $r->getAddresses() . "</td> " .
  212. "</tr>";
  213. $count ++;
  214. }
  215. $message .= "</table>";
  216. return $message;
  217. } catch (\Exception $e) {
  218. echo 'Exception when calling PayrollAuApi->getPayContacts: ', $e->getMessage(), PHP_EOL;
  219. return;
  220. }
  221. }
  222. public function xero_org_payroll_calendar()
  223. {
  224. update_option('bts_pay_roll_calendar_last_sync', time());
  225. try {
  226. $result = $this->oauth2->get_payroll_calendar();
  227. $pc = $result->getPayrollCalendars()[0];
  228. $start = $pc->getStartDateAsDate()->format('Y-m-d');
  229. $finish = new \DateTime($start);
  230. $finish = $finish->modify("+13 days")->format('Y-m-d');
  231. $paydate = $pc->getPaymentDateAsDate()->format('Y-m-d');
  232. $calendar["start"] = $start;
  233. $calendar["finish"] = $finish;
  234. $calendar["paydate"] = $paydate;
  235. return print_r ($calendar);
  236. }catch (\Exception $e) {
  237. echo 'Exception when calling PayrollAuApi->getPayrollCalendar: ', $e->getMessage(), PHP_EOL;
  238. }
  239. update_option('bts_pay_roll_calendar', $calendar);
  240. }
  241. }