lead.sync.factory.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. angular.module('odoo')
  2. .factory('leadsRemoteFactory', function (config, odoo, sqlFactory, asyncLoop) {
  3. // Retrieve leads data from server
  4. var retrieve = function (success, error) {
  5. config(function (configuration) {
  6. odoo.read('crm.lead', [['active', '=', true]], configuration, function (leads) {
  7. success(leads);
  8. }, function (odooErr) {
  9. error(odooErr);
  10. });
  11. }, function (configErr) {
  12. error(configErr);
  13. });
  14. }
  15. // Update leads remote data
  16. var update = function (id, data, success, error) {
  17. config(function (configuration) {
  18. odoo.write('crm.lead', id, data, configuration, function (response) {
  19. success(response);
  20. }, function (odooWriteErr) {
  21. error(odooWriteErr);
  22. });
  23. }, function (configErr) {
  24. error(configErr);
  25. });
  26. }
  27. // Create leads on remote data
  28. var send = function (data, success, error) {
  29. config(function (configuration) {retrieve(function (leads) {
  30. console.log(leads);
  31. success();
  32. }, function (retrieveError) {
  33. error(retrieveError);
  34. });
  35. odoo.create('crm.lead', data, configuration, function (response) {
  36. success(response);
  37. }, function (odooCreateErr) {
  38. error(odooCreateErr);
  39. });
  40. }, function (configErr) {
  41. error(configErr);
  42. });
  43. }
  44. // Select leads from local storage
  45. var select = function (contraint, success, error) {
  46. sqlFactory.selectByConstraint('lead', contraint, function (leads) {
  47. success(leads);
  48. }, function (err) {
  49. error(err);
  50. });
  51. }
  52. // Sync leads data between local and remote storage
  53. var sync = function (success, error) {
  54. select('remote_id = 0', function (newLeads) {
  55. asyncLoop(newLeads.length, function (loop) {
  56. var data = newLeads.item(loop.iteration());
  57. // Avoid odoo server warning message
  58. delete data.id;
  59. delete data.remote_id;
  60. delete data.modified;
  61. delete data.modifiedDate;
  62. send(data, function (response) {
  63. console.log(response);
  64. loop.next();
  65. }, function (sendErr) {
  66. loop.break();
  67. });
  68. }, function () {
  69. success();
  70. });
  71. }, function (selectErr) {
  72. error(selectErr);
  73. });
  74. }
  75. return {
  76. retrieve: retrieve,
  77. update: update,
  78. send: send,
  79. sync: sync
  80. }
  81. });