eiru_civil_engineering.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442
  1. (function() {
  2. openerp.widgetInstanceEiruAddTask = null;
  3. openerp.parentInstanceEiruAddTask = null;
  4. var Qweb = openerp.web.qweb;
  5. var instance = openerp;
  6. var instanceWeb = openerp.web;
  7. openerp.EiruAddTask = instance.Widget.extend({
  8. template: 'eiruCivil.AddTask',
  9. id: undefined,
  10. eiruTasks: [],
  11. currencyFormat: [],
  12. init: function(parent) {
  13. this._super(parent);
  14. this.buttons = parent.$buttons;
  15. },
  16. start: function() {
  17. var self = this;
  18. this.$el.click(function(){
  19. self.fectchInitial()
  20. });
  21. self.buttons.click(function(e) {
  22. /* E (Editar) */
  23. if (e.target.accessKey === 'E')
  24. self.$el.css('display','none');
  25. /* S (Guarrdar) */
  26. if (e.target.accessKey === 'S')
  27. self.$el.css('display','flex');
  28. /* D (Cancelar) */
  29. if (e.target.accessKey === 'D')
  30. self.$el.css('display','flex');
  31. /* CREAR */
  32. if (e.target.accessKey === 'C')
  33. self.$el.css('display','none');
  34. });
  35. },
  36. updateId: function(id) {
  37. var self = this;
  38. self.id = id;
  39. self.$el.css('display','flex');
  40. if (!id)
  41. self.$el.css('display','none');
  42. },
  43. /* Remover */
  44. removeModal: function() {
  45. $('.expired-account-modal').remove();
  46. $('.modal-backdrop').remove();
  47. },
  48. /* Reloada */
  49. reloadPage: function() {
  50. openerp.parentInstanceEiruAddTask.reload();
  51. },
  52. /* Metodo Inicial */
  53. fectchInitial: function() {
  54. var self = this;
  55. self.fetchTask().then(function(eiruTasks) {
  56. return eiruTasks;
  57. }).then(function(eiruTasks) {
  58. self.eiruTasks = eiruTasks;
  59. return self.fetchCurrencyOrder();
  60. }).then(function(currencyFormat) {
  61. self.currencyFormat = currencyFormat;
  62. return self.showTaskSelected()
  63. });
  64. },
  65. /* GET task */
  66. fetchTask: function() {
  67. var self = this;
  68. var task = new openerp.web.Model('construction.task')
  69. return task.call('get_construction_task',[self.id],{
  70. context: new openerp.web.CompoundContext()
  71. });
  72. },
  73. /* GET CURRENCY ORDER */
  74. fetchCurrencyOrder: function() {
  75. var self = this;
  76. var task = new openerp.web.Model('construction.order')
  77. return task.call('get_currency_order',[self.id],{
  78. context: new openerp.web.CompoundContext()
  79. });
  80. },
  81. /* Modal */
  82. showTaskSelected: function() {
  83. var self = this;
  84. var defer = $.Deferred();
  85. var state = true;
  86. var modal = Qweb.render('eiruTasks.Modal',{'tasks': self.eiruTasks});
  87. $('.openerp_webclient_container').after(modal);
  88. $('.expired-account-modal').modal();
  89. var tableRow = $('.expired-account-modal').find('.table-tbody').find('tr');
  90. var buttonAccept = $('.expired-account-modal').find('.button-accept');
  91. _.each(tableRow, function(tr) {
  92. if (($($(tr).children()[0]).find('.select-task-item'))[0].checked) {
  93. $(tr).addClass('selected-task');
  94. ($($(tr).children()[0]).find('.select-task-item'))[0].checked=true;
  95. $($($(tr).children()[4]).find('.task-qty')[0]).addClass('task-input-in');
  96. $($($(tr).children()[5]).find('.task-amount')[0]).addClass('task-input-in');
  97. $($($(tr).children()[6]).find('.task-amoutn-total')[0]).addClass('task-input-in');
  98. if (($(tr).children()[10].textContent).trim() !== 'task'){
  99. $($($(tr).children()[5]).find('.task-amount')[0]).removeAttr("disabled");
  100. $($($(tr).children()[4]).find('.task-qty')[0]).removeAttr("disabled");
  101. }
  102. /* Format */
  103. formatInput = {'thousandsSeparator': '.', 'decimalPlaces': 2, 'decimalSeparator':','}
  104. var qtyInput = ($($(tr).children()[4]).find('.task-qty'));
  105. var amountInput = ($($(tr).children()[5]).find('.task-amount'));
  106. var amountInputTotal = ($($(tr).children()[6]).find('.task-amoutn-total'));
  107. // var qtyInput = $($(e.target).closest('tr').children()[4]).find('.task-qty');
  108. var qty = instanceWeb.unFormatCurrency( qtyInput.val());
  109. qtyInput.val(instanceWeb.formatCurrency(qty, formatInput))
  110. // var amountInput = $($(e.target).closest('tr').children()[5]).find('.task-amount');
  111. var amount = instanceWeb.unFormatCurrency( amountInput.val());
  112. amountInput.val(instanceWeb.formatCurrency(amount, self.currencyFormat))
  113. // var amountInputTotal = $($(e.target).closest('tr').children()[6]).find('.task-amoutn-total');
  114. var amountTotal = instanceWeb.unFormatCurrency( amountInputTotal.val());
  115. amountInputTotal.val(instanceWeb.formatCurrency(amountTotal, self.currencyFormat))
  116. }
  117. if (($(tr).children()[10].textContent).trim() === 'task') {
  118. $(tr).addClass('task-header-line');
  119. }
  120. })
  121. /* CLICK */
  122. tableRow.click(function(e) {
  123. if (($(e.target).index() !== 0) ||(($(e.target).index() === 0) && ($(e.target)[0].className !== 'select-task-item')))
  124. return false;
  125. var typeTask = ($(e.target).closest('tr').children()[10].textContent).trim();
  126. var idTask = parseInt(($(e.target).closest('tr').children()[7].textContent).trim());
  127. var idTaskLine = parseInt(($(e.target).closest('tr').children()[8].textContent).trim());
  128. if (typeTask === 'task') {
  129. if (e.target.checked === true) {
  130. _.each(tableRow, function(tr) {
  131. taskID = parseInt(($(tr).children()[7].textContent).trim())
  132. lineID = parseInt(($(tr).children()[8].textContent).trim())
  133. if (taskID === idTask ) {
  134. /* SELECT */
  135. $(tr).addClass('selected-task');
  136. ($($(tr).children()[0]).find('.select-task-item'))[0].checked=true;
  137. $($($(tr).children()[4]).find('.task-qty')[0]).addClass('task-input-in');
  138. $($($(tr).children()[5]).find('.task-amount')[0]).addClass('task-input-in');
  139. $($($(tr).children()[6]).find('.task-amoutn-total')[0]).addClass('task-input-in');
  140. if (!!lineID) {
  141. $($($(tr).children()[5]).find('.task-amount')[0]).removeAttr("disabled");
  142. $($($(tr).children()[4]).find('.task-qty')[0]).removeAttr("disabled");
  143. }
  144. }
  145. })
  146. } else {
  147. _.each(tableRow, function(tr) {
  148. taskID = parseInt(($(tr).children()[7].textContent).trim())
  149. if (taskID === idTask) {
  150. $(tr).removeClass('selected-task');
  151. ($($(tr).children()[0]).find('.select-task-item'))[0].checked=false;
  152. /* QTY */
  153. $($($(tr).children()[4]).find('.task-qty')[0]).removeClass('task-input-in');
  154. $($($(tr).children()[4]).find('.task-qty')[0]).attr("disabled", true);
  155. /* AMOUNT */
  156. $($($(tr).children()[5]).find('.task-amount')[0]).removeClass('task-input-in');
  157. $($($(tr).children()[5]).find('.task-amount')[0]).attr("disabled", true);
  158. /* TOTAL */
  159. $($($(tr).children()[6]).find('.task-amoutn-total')[0]).removeClass('task-input-in');
  160. ($($(tr).children()[4]).find('.task-qty')).val(0);
  161. ($($(tr).children()[5]).find('.task-amount')).val(0);
  162. ($($(tr).children()[6]).find('.task-amoutn-total')).val(0);
  163. }
  164. })
  165. }
  166. } else {
  167. if (e.target.checked === true) {
  168. $(e.target).closest('tr').addClass('selected-task');
  169. $($($(e.target).closest('tr').children()[4]).find('.task-qty')[0]).addClass('task-input-in');
  170. $($($(e.target).closest('tr').children()[5]).find('.task-amount')[0]).addClass('task-input-in');
  171. $($($(e.target).closest('tr').children()[6]).find('.task-amoutn-total')[0]).addClass('task-input-in');
  172. $($($(e.target).closest('tr').children()[5]).find('.task-amount')[0]).removeAttr("disabled");
  173. $($($(e.target).closest('tr').children()[4]).find('.task-qty')[0]).removeAttr("disabled");
  174. ($($(e.target).closest('tr').children()[4]).find('.task-qty')).focus();
  175. _.each(tableRow,function(tr){
  176. taskID = parseInt(($(tr).children()[7].textContent).trim())
  177. lineID = parseInt(($(tr).children()[8].textContent).trim())
  178. if ((taskID === idTask) && (!lineID)) {
  179. $(tr).addClass('selected-task');
  180. // /* SELECTED */
  181. ($($(tr).children()[0]).find('.select-task-item'))[0].checked=true;
  182. $($($(tr).children()[4]).find('.task-qty')[0]).addClass('task-input-in');
  183. $($($(tr).children()[5]).find('.task-amount')[0]).addClass('task-input-in');
  184. $($($(tr).children()[6]).find('.task-amoutn-total')[0]).addClass('task-input-in');
  185. }
  186. });
  187. } else {
  188. $(e.target).closest('tr').removeClass('selected-task');
  189. $($($(e.target).closest('tr').children()[4]).find('.task-qty')[0]).removeClass('task-input-in');
  190. $($($(e.target).closest('tr').children()[4]).find('.task-qty')[0]).attr("disabled", true);
  191. $($($(e.target).closest('tr').children()[5]).find('.task-amount')[0]).removeClass('task-input-in');
  192. $($($(e.target).closest('tr').children()[5]).find('.task-amount')[0]).attr("disabled", true);
  193. $($($(e.target).closest('tr').children()[6]).find('.task-amoutn-total')[0]).removeClass('task-input-in');
  194. ($($(e.target).closest('tr').children()[4]).find('.task-qty')).val(0);
  195. ($($(e.target).closest('tr').children()[5]).find('.task-amount')).val(0);
  196. ($($(e.target).closest('tr').children()[6]).find('.task-amoutn-total')).val(0);
  197. var stateSelect = false;
  198. _.each(tableRow,function(tr){
  199. taskID = parseInt(($(tr).children()[7].textContent).trim())
  200. lineID = parseInt(($(tr).children()[8].textContent).trim())
  201. if ((taskID === idTask) && (!lineID)) {
  202. var totalAmount = 0
  203. _.each(tableRow,function(tr){
  204. if ((parseInt(($(tr).children()[7].textContent).trim()) === idTask) && (!! parseInt(($(tr).children()[8].textContent).trim()))) {
  205. if (!!(($($(tr).children()[0]).find('.select-task-item'))[0].checked)){
  206. stateSelect = ($($(tr).children()[0]).find('.select-task-item'))[0].checked;
  207. var qty = ($($(tr).children()[4]).find('.task-qty'));
  208. var amount = ($($(tr).children()[5]).find('.task-amount'));
  209. var total = ($($(tr).children()[6]).find('.task-amoutn-total'));
  210. total.val(instanceWeb.formatCurrency((instanceWeb.unFormatCurrency(qty.val()) * instanceWeb.unFormatCurrency(amount.val())), self.currencyFormat));
  211. /* Total */
  212. totalAmount += instanceWeb.unFormatCurrency(total.val());
  213. }
  214. }
  215. });
  216. if (!stateSelect){
  217. ($($(tr).children()[0]).find('.select-task-item'))[0].checked = false;
  218. $(tr).removeClass('selected-task');
  219. $($($(tr).children()[4]).find('.task-qty')[0]).removeClass('task-input-in');
  220. $($($(tr).children()[5]).find('.task-amount')[0]).removeClass('task-input-in');
  221. $($($(tr).children()[6]).find('.task-amoutn-total')[0]).removeClass('task-input-in');
  222. }
  223. ($($(tr).children()[4]).find('.task-qty')).val(0);
  224. ($($(tr).children()[5]).find('.task-amount')).val(0);
  225. ($($(tr).children()[6]).find('.task-amoutn-total')).val(instanceWeb.formatCurrency(totalAmount, self.currencyFormat));
  226. }
  227. });
  228. }
  229. }
  230. });
  231. // FOCUSIN
  232. tableRow.focusin(function(e){
  233. if (($(e.target).index() !== 0) && (($(e.target)[0].className !== 'task-qty') || ($(e.target)[0].className !== 'task-amount')))
  234. return false;
  235. var qtyInput = $($(e.target).closest('tr').children()[4]).find('.task-qty');
  236. var amountInput = $($(e.target).closest('tr').children()[5]).find('.task-amount');
  237. var nameClase = ($(e.target)[0].className).trim().split(" ");
  238. /* QTY */
  239. if (_.contains(nameClase, 'task-qty')) {
  240. var qty = instanceWeb.unFormatCurrency( qtyInput.val());
  241. if (qty === 0)
  242. qtyInput.val('');
  243. }
  244. /* Precio Unitario*/
  245. if (_.contains(nameClase, 'task-amount')) {
  246. var amount = instanceWeb.unFormatCurrency( amountInput.val());
  247. if (amount === 0)
  248. amountInput.val('');
  249. }
  250. });
  251. /* KEYUP */
  252. tableRow.keyup(function(e) {
  253. if (($(e.target).index() !== 0) && (($(e.target)[0].className !== 'task-qty') || ($(e.target)[0].className !== 'task-amount'))){
  254. return false;
  255. }
  256. var qtyInput = $($(e.target).closest('tr').children()[4]).find('.task-qty');
  257. var amountInput = $($(e.target).closest('tr').children()[5]).find('.task-amount');
  258. var totalInput = $($(e.target).closest('tr').children()[6]).find('.task-amoutn-total');
  259. var nameClase = ($(e.target)[0].className).trim().split(" ");
  260. /* QTY */
  261. if (_.contains(nameClase, 'task-qty')) {
  262. formatInput = {
  263. 'thousandsSeparator': '.',
  264. 'decimalPlaces': 2,
  265. 'decimalSeparator':','
  266. }
  267. if (e.key === formatInput.decimalSeparator && formatInput.decimalPlaces > 0)
  268. return
  269. var qty = instanceWeb.unFormatCurrency( qtyInput.val());
  270. qty = instanceWeb.formatCurrency(qty, formatInput)
  271. qtyInput.val(qty)
  272. }
  273. /* AMOUNT */
  274. if (_.contains(nameClase, 'task-amount')) {
  275. if (e.key === self.currencyFormat.decimalSeparator && self.currencyFormat.decimalPlaces > 0)
  276. return
  277. var amount = instanceWeb.unFormatCurrency( amountInput.val());
  278. amount = instanceWeb.formatCurrency(amount, self.currencyFormat)
  279. amountInput.val(amount)
  280. }
  281. });
  282. /* FOCUS OUT */
  283. tableRow.focusout(function(e) {
  284. if (($(e.target).index() !== 0) && (($(e.target)[0].className !== 'task-qty') || ($(e.target)[0].className !== 'task-amount'))){
  285. return false;
  286. }
  287. var idTask = parseInt(($(e.target).closest('tr').children()[7].textContent).trim());
  288. _.each(tableRow,function(tr){
  289. taskID = parseInt(($(tr).children()[7].textContent).trim())
  290. lineID = parseInt(($(tr).children()[8].textContent).trim())
  291. if ((taskID === idTask) && (!lineID)) {
  292. var totalTask = ($($(tr).children()[6]).find('.task-amoutn-total'))
  293. var totalAmount = 0;
  294. _.each(tableRow,function(tr){
  295. if ((parseInt(($(tr).children()[7].textContent).trim()) === idTask) && (!! parseInt(($(tr).children()[8].textContent).trim()))) {
  296. if (!!(($($(tr).children()[0]).find('.select-task-item'))[0].checked)){
  297. var qty = ($($(tr).children()[4]).find('.task-qty'));
  298. var amount = ($($(tr).children()[5]).find('.task-amount'));
  299. var total = ($($(tr).children()[6]).find('.task-amoutn-total'));
  300. total.val(instanceWeb.formatCurrency((instanceWeb.unFormatCurrency(qty.val()) * instanceWeb.unFormatCurrency(amount.val())), self.currencyFormat));
  301. /* Total */
  302. totalAmount += instanceWeb.unFormatCurrency(total.val());
  303. }
  304. }
  305. });
  306. totalTask.val(instanceWeb.formatCurrency(totalAmount, self.currencyFormat));
  307. }
  308. });
  309. });
  310. /* GUARDAR */
  311. buttonAccept.click(function(e){
  312. var orderTask = [];
  313. _.each(tableRow, function(tr) {
  314. if ( ($($(tr).children()[0]).find('.select-task-item'))[0].checked ) {
  315. var qty = ($($(tr).children()[4]).find('.task-qty'));
  316. var amount = ($($(tr).children()[5]).find('.task-amount'));
  317. var total = ($($(tr).children()[6]).find('.task-amoutn-total'));
  318. orderTask.push({
  319. 'code': ($(tr).children()[1].textContent).trim(),
  320. 'taskName': ($(tr).children()[2].textContent).trim(),
  321. 'qty': instanceWeb.unFormatCurrency(qty.val()),
  322. 'amount': instanceWeb.unFormatCurrency(amount.val()),
  323. 'amountTotal': instanceWeb.unFormatCurrency(total.val()),
  324. 'taskId': ($(tr).children()[7].textContent).trim(),
  325. 'taskLineId': ($(tr).children()[8].textContent).trim(),
  326. 'uomId': ($(tr).children()[9].textContent).trim(),
  327. 'type': ($(tr).children()[10].textContent).trim(),
  328. // 'orderIds' : self.id,
  329. })
  330. }
  331. });
  332. if (!orderTask.length) {
  333. instanceWeb.notification.do_warn("Atencion", "Debes seleccionar al menos una tarea.");
  334. return
  335. }
  336. self.addtask(orderTask).then(function(taskAdd) {
  337. return taskAdd;
  338. }).then(function(taskAdd) {
  339. state = taskAdd.state;
  340. // instanceWeb.notification.do_warn("Atencion", taskAdd.message);
  341. self.reloadPage();
  342. self.removeModal(e);
  343. });
  344. defer.resolve(state);
  345. });
  346. /* Click Cerrar */
  347. $('.expired-account-modal').on('hidden.bs.modal', function (e) {
  348. defer.resolve(false);
  349. self.removeModal(e);
  350. });
  351. return defer;
  352. },
  353. /*actualizar line order */
  354. addtask: function(tasks){
  355. var self = this;
  356. var order = new instance.web.Model('construction.order');
  357. return order.call('eiru_add_task',[self.id, tasks], {
  358. context: new instance.web.CompoundContext()
  359. });
  360. },
  361. });
  362. if (instance.web && instance.web.FormView) {
  363. instance.web.FormView.include({
  364. load_record: function(record) {
  365. this._super.apply(this, arguments);
  366. if (this.model !== 'construction.order')
  367. return;
  368. openerp.parentInstanceEiruAddTask = this;
  369. if (openerp.widgetInstanceEiruAddTask) {
  370. openerp.widgetInstanceEiruAddTask.updateId(record.id);
  371. if (this.$el.find('.button-add-task').length !== 0){
  372. return
  373. }
  374. }
  375. if (this.$el.find('.button-add-task').length !== 0 )
  376. return;
  377. openerp.widgetInstanceEiruAddTask = new openerp.EiruAddTask(this);
  378. var elemento = this.$el.find('.oe_form').find('.eiru-add-task');
  379. openerp.widgetInstanceEiruAddTask.appendTo(elemento);
  380. openerp.widgetInstanceEiruAddTask.updateId(record.id);
  381. },
  382. });
  383. }
  384. })();