(function() { openerp.widgetInstanceEiruAddTask = null; openerp.parentInstanceEiruAddTask = null; var Qweb = openerp.web.qweb; var instance = openerp; var instanceWeb = openerp.web; openerp.EiruAddTask = instance.Widget.extend({ template: 'eiruCivil.AddTask', id: undefined, eiruTasks: [], currencyFormat: [], init: function(parent) { this._super(parent); this.buttons = parent.$buttons; }, start: function() { var self = this; this.$el.click(function(){ self.fectchInitial() }); self.buttons.click(function(e) { /* E (Editar) */ if (e.target.accessKey === 'E') self.$el.css('display','none'); /* S (Guarrdar) */ if (e.target.accessKey === 'S') self.$el.css('display','flex'); /* D (Cancelar) */ if (e.target.accessKey === 'D') self.$el.css('display','flex'); /* CREAR */ if (e.target.accessKey === 'C') self.$el.css('display','none'); }); }, updateId: function(id) { var self = this; self.id = id; self.$el.css('display','flex'); if (!id) self.$el.css('display','none'); }, /* Remover */ removeModal: function() { $('.expired-account-modal').remove(); $('.modal-backdrop').remove(); }, /* Reloada */ reloadPage: function() { openerp.parentInstanceEiruAddTask.reload(); }, /* Metodo Inicial */ fectchInitial: function() { var self = this; self.fetchTask().then(function(eiruTasks) { return eiruTasks; }).then(function(eiruTasks) { self.eiruTasks = eiruTasks; return self.fetchCurrencyOrder(); }).then(function(currencyFormat) { self.currencyFormat = currencyFormat; return self.showTaskSelected() }); }, /* GET task */ fetchTask: function() { var self = this; var task = new openerp.web.Model('construction.task') return task.call('get_construction_task',[self.id],{ context: new openerp.web.CompoundContext() }); }, /* GET CURRENCY ORDER */ fetchCurrencyOrder: function() { var self = this; var task = new openerp.web.Model('construction.order') return task.call('get_currency_order',[self.id],{ context: new openerp.web.CompoundContext() }); }, /* Modal */ showTaskSelected: function() { var self = this; var defer = $.Deferred(); var state = true; var modal = Qweb.render('eiruTasks.Modal',{'tasks': self.eiruTasks}); $('.openerp_webclient_container').after(modal); $('.expired-account-modal').modal(); var tableRow = $('.expired-account-modal').find('.table-tbody').find('tr'); var buttonAccept = $('.expired-account-modal').find('.button-accept'); _.each(tableRow, function(tr) { if (($($(tr).children()[0]).find('.select-task-item'))[0].checked) { $(tr).addClass('selected-task'); ($($(tr).children()[0]).find('.select-task-item'))[0].checked=true; $($($(tr).children()[4]).find('.task-qty')[0]).addClass('task-input-in'); $($($(tr).children()[5]).find('.task-amount')[0]).addClass('task-input-in'); $($($(tr).children()[6]).find('.task-amoutn-total')[0]).addClass('task-input-in'); if (($(tr).children()[10].textContent).trim() !== 'task'){ $($($(tr).children()[5]).find('.task-amount')[0]).removeAttr("disabled"); $($($(tr).children()[4]).find('.task-qty')[0]).removeAttr("disabled"); } /* Format */ formatInput = {'thousandsSeparator': '.', 'decimalPlaces': 2, 'decimalSeparator':','} var qtyInput = ($($(tr).children()[4]).find('.task-qty')); var amountInput = ($($(tr).children()[5]).find('.task-amount')); var amountInputTotal = ($($(tr).children()[6]).find('.task-amoutn-total')); // var qtyInput = $($(e.target).closest('tr').children()[4]).find('.task-qty'); var qty = instanceWeb.unFormatCurrency( qtyInput.val()); qtyInput.val(instanceWeb.formatCurrency(qty, formatInput)) // var amountInput = $($(e.target).closest('tr').children()[5]).find('.task-amount'); var amount = instanceWeb.unFormatCurrency( amountInput.val()); amountInput.val(instanceWeb.formatCurrency(amount, self.currencyFormat)) // var amountInputTotal = $($(e.target).closest('tr').children()[6]).find('.task-amoutn-total'); var amountTotal = instanceWeb.unFormatCurrency( amountInputTotal.val()); amountInputTotal.val(instanceWeb.formatCurrency(amountTotal, self.currencyFormat)) } if (($(tr).children()[10].textContent).trim() === 'task') { $(tr).addClass('task-header-line'); } }) /* CLICK */ tableRow.click(function(e) { if (($(e.target).index() !== 0) ||(($(e.target).index() === 0) && ($(e.target)[0].className !== 'select-task-item'))) return false; var typeTask = ($(e.target).closest('tr').children()[10].textContent).trim(); var idTask = parseInt(($(e.target).closest('tr').children()[7].textContent).trim()); var idTaskLine = parseInt(($(e.target).closest('tr').children()[8].textContent).trim()); if (typeTask === 'task') { if (e.target.checked === true) { _.each(tableRow, function(tr) { taskID = parseInt(($(tr).children()[7].textContent).trim()) lineID = parseInt(($(tr).children()[8].textContent).trim()) if (taskID === idTask ) { /* SELECT */ $(tr).addClass('selected-task'); ($($(tr).children()[0]).find('.select-task-item'))[0].checked=true; $($($(tr).children()[4]).find('.task-qty')[0]).addClass('task-input-in'); $($($(tr).children()[5]).find('.task-amount')[0]).addClass('task-input-in'); $($($(tr).children()[6]).find('.task-amoutn-total')[0]).addClass('task-input-in'); if (!!lineID) { $($($(tr).children()[5]).find('.task-amount')[0]).removeAttr("disabled"); $($($(tr).children()[4]).find('.task-qty')[0]).removeAttr("disabled"); } } }) } else { _.each(tableRow, function(tr) { taskID = parseInt(($(tr).children()[7].textContent).trim()) if (taskID === idTask) { $(tr).removeClass('selected-task'); ($($(tr).children()[0]).find('.select-task-item'))[0].checked=false; /* QTY */ $($($(tr).children()[4]).find('.task-qty')[0]).removeClass('task-input-in'); $($($(tr).children()[4]).find('.task-qty')[0]).attr("disabled", true); /* AMOUNT */ $($($(tr).children()[5]).find('.task-amount')[0]).removeClass('task-input-in'); $($($(tr).children()[5]).find('.task-amount')[0]).attr("disabled", true); /* TOTAL */ $($($(tr).children()[6]).find('.task-amoutn-total')[0]).removeClass('task-input-in'); ($($(tr).children()[4]).find('.task-qty')).val(0); ($($(tr).children()[5]).find('.task-amount')).val(0); ($($(tr).children()[6]).find('.task-amoutn-total')).val(0); } }) } } else { if (e.target.checked === true) { $(e.target).closest('tr').addClass('selected-task'); $($($(e.target).closest('tr').children()[4]).find('.task-qty')[0]).addClass('task-input-in'); $($($(e.target).closest('tr').children()[5]).find('.task-amount')[0]).addClass('task-input-in'); $($($(e.target).closest('tr').children()[6]).find('.task-amoutn-total')[0]).addClass('task-input-in'); $($($(e.target).closest('tr').children()[5]).find('.task-amount')[0]).removeAttr("disabled"); $($($(e.target).closest('tr').children()[4]).find('.task-qty')[0]).removeAttr("disabled"); ($($(e.target).closest('tr').children()[4]).find('.task-qty')).focus(); _.each(tableRow,function(tr){ taskID = parseInt(($(tr).children()[7].textContent).trim()) lineID = parseInt(($(tr).children()[8].textContent).trim()) if ((taskID === idTask) && (!lineID)) { $(tr).addClass('selected-task'); // /* SELECTED */ ($($(tr).children()[0]).find('.select-task-item'))[0].checked=true; $($($(tr).children()[4]).find('.task-qty')[0]).addClass('task-input-in'); $($($(tr).children()[5]).find('.task-amount')[0]).addClass('task-input-in'); $($($(tr).children()[6]).find('.task-amoutn-total')[0]).addClass('task-input-in'); } }); } else { $(e.target).closest('tr').removeClass('selected-task'); $($($(e.target).closest('tr').children()[4]).find('.task-qty')[0]).removeClass('task-input-in'); $($($(e.target).closest('tr').children()[4]).find('.task-qty')[0]).attr("disabled", true); $($($(e.target).closest('tr').children()[5]).find('.task-amount')[0]).removeClass('task-input-in'); $($($(e.target).closest('tr').children()[5]).find('.task-amount')[0]).attr("disabled", true); $($($(e.target).closest('tr').children()[6]).find('.task-amoutn-total')[0]).removeClass('task-input-in'); ($($(e.target).closest('tr').children()[4]).find('.task-qty')).val(0); ($($(e.target).closest('tr').children()[5]).find('.task-amount')).val(0); ($($(e.target).closest('tr').children()[6]).find('.task-amoutn-total')).val(0); var stateSelect = false; _.each(tableRow,function(tr){ taskID = parseInt(($(tr).children()[7].textContent).trim()) lineID = parseInt(($(tr).children()[8].textContent).trim()) if ((taskID === idTask) && (!lineID)) { var totalAmount = 0 _.each(tableRow,function(tr){ if ((parseInt(($(tr).children()[7].textContent).trim()) === idTask) && (!! parseInt(($(tr).children()[8].textContent).trim()))) { if (!!(($($(tr).children()[0]).find('.select-task-item'))[0].checked)){ stateSelect = ($($(tr).children()[0]).find('.select-task-item'))[0].checked; var qty = ($($(tr).children()[4]).find('.task-qty')); var amount = ($($(tr).children()[5]).find('.task-amount')); var total = ($($(tr).children()[6]).find('.task-amoutn-total')); total.val(instanceWeb.formatCurrency((instanceWeb.unFormatCurrency(qty.val()) * instanceWeb.unFormatCurrency(amount.val())), self.currencyFormat)); /* Total */ totalAmount += instanceWeb.unFormatCurrency(total.val()); } } }); if (!stateSelect){ ($($(tr).children()[0]).find('.select-task-item'))[0].checked = false; $(tr).removeClass('selected-task'); $($($(tr).children()[4]).find('.task-qty')[0]).removeClass('task-input-in'); $($($(tr).children()[5]).find('.task-amount')[0]).removeClass('task-input-in'); $($($(tr).children()[6]).find('.task-amoutn-total')[0]).removeClass('task-input-in'); } ($($(tr).children()[4]).find('.task-qty')).val(0); ($($(tr).children()[5]).find('.task-amount')).val(0); ($($(tr).children()[6]).find('.task-amoutn-total')).val(instanceWeb.formatCurrency(totalAmount, self.currencyFormat)); } }); } } }); // FOCUSIN tableRow.focusin(function(e){ if (($(e.target).index() !== 0) && (($(e.target)[0].className !== 'task-qty') || ($(e.target)[0].className !== 'task-amount'))) return false; var qtyInput = $($(e.target).closest('tr').children()[4]).find('.task-qty'); var amountInput = $($(e.target).closest('tr').children()[5]).find('.task-amount'); var nameClase = ($(e.target)[0].className).trim().split(" "); /* QTY */ if (_.contains(nameClase, 'task-qty')) { var qty = instanceWeb.unFormatCurrency( qtyInput.val()); if (qty === 0) qtyInput.val(''); } /* Precio Unitario*/ if (_.contains(nameClase, 'task-amount')) { var amount = instanceWeb.unFormatCurrency( amountInput.val()); if (amount === 0) amountInput.val(''); } }); /* KEYUP */ tableRow.keyup(function(e) { if (($(e.target).index() !== 0) && (($(e.target)[0].className !== 'task-qty') || ($(e.target)[0].className !== 'task-amount'))){ return false; } var qtyInput = $($(e.target).closest('tr').children()[4]).find('.task-qty'); var amountInput = $($(e.target).closest('tr').children()[5]).find('.task-amount'); var totalInput = $($(e.target).closest('tr').children()[6]).find('.task-amoutn-total'); var nameClase = ($(e.target)[0].className).trim().split(" "); /* QTY */ if (_.contains(nameClase, 'task-qty')) { formatInput = { 'thousandsSeparator': '.', 'decimalPlaces': 2, 'decimalSeparator':',' } if (e.key === formatInput.decimalSeparator && formatInput.decimalPlaces > 0) return var qty = instanceWeb.unFormatCurrency( qtyInput.val()); qty = instanceWeb.formatCurrency(qty, formatInput) qtyInput.val(qty) } /* AMOUNT */ if (_.contains(nameClase, 'task-amount')) { if (e.key === self.currencyFormat.decimalSeparator && self.currencyFormat.decimalPlaces > 0) return var amount = instanceWeb.unFormatCurrency( amountInput.val()); amount = instanceWeb.formatCurrency(amount, self.currencyFormat) amountInput.val(amount) } }); /* FOCUS OUT */ tableRow.focusout(function(e) { if (($(e.target).index() !== 0) && (($(e.target)[0].className !== 'task-qty') || ($(e.target)[0].className !== 'task-amount'))){ return false; } var idTask = parseInt(($(e.target).closest('tr').children()[7].textContent).trim()); _.each(tableRow,function(tr){ taskID = parseInt(($(tr).children()[7].textContent).trim()) lineID = parseInt(($(tr).children()[8].textContent).trim()) if ((taskID === idTask) && (!lineID)) { var totalTask = ($($(tr).children()[6]).find('.task-amoutn-total')) var totalAmount = 0; _.each(tableRow,function(tr){ if ((parseInt(($(tr).children()[7].textContent).trim()) === idTask) && (!! parseInt(($(tr).children()[8].textContent).trim()))) { if (!!(($($(tr).children()[0]).find('.select-task-item'))[0].checked)){ var qty = ($($(tr).children()[4]).find('.task-qty')); var amount = ($($(tr).children()[5]).find('.task-amount')); var total = ($($(tr).children()[6]).find('.task-amoutn-total')); total.val(instanceWeb.formatCurrency((instanceWeb.unFormatCurrency(qty.val()) * instanceWeb.unFormatCurrency(amount.val())), self.currencyFormat)); /* Total */ totalAmount += instanceWeb.unFormatCurrency(total.val()); } } }); totalTask.val(instanceWeb.formatCurrency(totalAmount, self.currencyFormat)); } }); }); /* GUARDAR */ buttonAccept.click(function(e){ var orderTask = []; _.each(tableRow, function(tr) { if ( ($($(tr).children()[0]).find('.select-task-item'))[0].checked ) { var qty = ($($(tr).children()[4]).find('.task-qty')); var amount = ($($(tr).children()[5]).find('.task-amount')); var total = ($($(tr).children()[6]).find('.task-amoutn-total')); orderTask.push({ 'code': ($(tr).children()[1].textContent).trim(), 'taskName': ($(tr).children()[2].textContent).trim(), 'qty': instanceWeb.unFormatCurrency(qty.val()), 'amount': instanceWeb.unFormatCurrency(amount.val()), 'amountTotal': instanceWeb.unFormatCurrency(total.val()), 'taskId': ($(tr).children()[7].textContent).trim(), 'taskLineId': ($(tr).children()[8].textContent).trim(), 'uomId': ($(tr).children()[9].textContent).trim(), 'type': ($(tr).children()[10].textContent).trim(), // 'orderIds' : self.id, }) } }); if (!orderTask.length) { instanceWeb.notification.do_warn("Atencion", "Debes seleccionar al menos una tarea."); return } self.addtask(orderTask).then(function(taskAdd) { return taskAdd; }).then(function(taskAdd) { state = taskAdd.state; // instanceWeb.notification.do_warn("Atencion", taskAdd.message); self.reloadPage(); self.removeModal(e); }); defer.resolve(state); }); /* Click Cerrar */ $('.expired-account-modal').on('hidden.bs.modal', function (e) { defer.resolve(false); self.removeModal(e); }); return defer; }, /*actualizar line order */ addtask: function(tasks){ var self = this; var order = new instance.web.Model('construction.order'); return order.call('eiru_add_task',[self.id, tasks], { context: new instance.web.CompoundContext() }); }, }); if (instance.web && instance.web.FormView) { instance.web.FormView.include({ load_record: function(record) { this._super.apply(this, arguments); if (this.model !== 'construction.order') return; openerp.parentInstanceEiruAddTask = this; if (openerp.widgetInstanceEiruAddTask) { openerp.widgetInstanceEiruAddTask.updateId(record.id); if (this.$el.find('.button-add-task').length !== 0){ return } } if (this.$el.find('.button-add-task').length !== 0 ) return; openerp.widgetInstanceEiruAddTask = new openerp.EiruAddTask(this); var elemento = this.$el.find('.oe_form').find('.eiru-add-task'); openerp.widgetInstanceEiruAddTask.appendTo(elemento); openerp.widgetInstanceEiruAddTask.updateId(record.id); }, }); } })();