eiru_statement_cancel.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. (function() {
  2. openerp.widgetInstanceStatementCancel = null;
  3. openerp.parentInstanceStatementCancel = {};
  4. var QWeb = openerp.web.qweb;
  5. var instanceWeb = openerp.web;
  6. // Abrir caja
  7. openerp.EiruStatementCancel = openerp.Widget.extend({
  8. template: 'EiruStatementUtility.Cancel',
  9. id: undefined,
  10. buttons: undefined,
  11. bankStatement: [],
  12. resUser: [],
  13. statementConfig: [],
  14. /* init */
  15. init: function(parent) {
  16. this._super(parent);
  17. this.buttons = parent.$buttons;
  18. },
  19. /* start */
  20. start: function () {
  21. var self = this
  22. this.$el.click(function() {
  23. self.fetchInitial();
  24. });
  25. self.buttons.click(function(e) {
  26. /* C (Crear) */
  27. if (e.target.accessKey === 'C')
  28. self.$el.css('display','none');
  29. /* E (Editar) */
  30. if (e.target.accessKey === 'E')
  31. self.$el.css('display','none');
  32. /* S (Guarrdar) */
  33. if (e.target.accessKey === 'S')
  34. self.$el.css('display','flex');
  35. /* D (Cancelar) */
  36. if (e.target.accessKey === 'D')
  37. self.$el.css('display','flex');
  38. });
  39. },
  40. /* Actualizar Id de la visat actual */
  41. updateId: function(id) {
  42. var self = this;
  43. self.id = id;
  44. },
  45. /* Reload Page*/
  46. reloadPage: function() {
  47. openerp.parentInstanceStatementCancel.reload();
  48. },
  49. /* Description: Función para remover el modal */
  50. removeModal: function() {
  51. $('.expired-account-modal').remove();
  52. $('.modal-backdrop').remove();
  53. },
  54. /* Método inicial */
  55. fetchInitial: function() {
  56. var self = this;
  57. self.fetchBankStatement(self.id).then(function(bankStatement) {
  58. return bankStatement;
  59. }).then(function(bankStatement) {
  60. self.bankStatement = bankStatement;
  61. return self.fetchGetUserLogin();
  62. }).then(function(resUser){
  63. self.resUser = resUser;
  64. return self.fetchStatementConfigTransfer();
  65. }).then(function(statementConfig){
  66. self.statementConfig = statementConfig;
  67. /* Verificar el usuario */
  68. if (!self.resUser.length){
  69. instanceWeb.notification.do_warn("Atencion", "No estas autorizado a realizar esta operación.");
  70. return false;
  71. }
  72. /* Verificar si existe configuracion */
  73. if (!self.statementConfig.length){
  74. instanceWeb.notification.do_warn("Atencion", "No estas autorizado a realizar esta operación, no existe configuración de caja.");
  75. return false;
  76. }
  77. /* Verificar si el usuario tiene autorización para cerrar la caja */
  78. if (!(_.contains(self.statementConfig[0].statement_cancel_user, self.resUser[0].id))){
  79. instanceWeb.notification.do_warn("Atencion", "El usuario no tiene autorización para cancelar la caja.");
  80. return false;
  81. }
  82. return self.showModal();
  83. });
  84. },
  85. /* Account bank Statement */
  86. fetchBankStatement: function(id) {
  87. var bankStatement = new instanceWeb.Model('account.bank.statement');
  88. return bankStatement.call('eiru_get_bank_statement_cancel',[parseInt(id)], {
  89. context: new instanceWeb.CompoundContext()
  90. });
  91. },
  92. /*Get User*/
  93. fetchGetUserLogin: function(){
  94. var bankStatementUser = new instanceWeb.Model('account.bank.statement');
  95. return bankStatementUser.call('eiru_transfers_get_user', {
  96. context: new instanceWeb.CompoundContext()
  97. });
  98. },
  99. /* statement Config */
  100. fetchStatementConfigTransfer: function() {
  101. var fields = ['id','name','statement_cancel_user'];
  102. var domain = [['active', '=', true]];
  103. var statementConfig = new openerp.web.Model('account.bank.statement.config');
  104. return statementConfig.query(fields).filter(domain).all();
  105. },
  106. /* get Transferencia */
  107. getTransfer: function(){
  108. var self = this;
  109. var statement = self.bankStatement[0];
  110. var transfer = [];
  111. var currency = statement.currencystatement;
  112. if(!currency)
  113. return transfer;
  114. _.each(statement.statementTransfer, function(item) {
  115. transfer.push({
  116. 'id': item.id,
  117. 'date': moment(item.date).format("DD-MM-YYYY"),
  118. 'amount': accounting.formatNumber(item.amount, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator),
  119. 'statementUser': item.type === 'out' ? item.inputStatement.statementUser :item.outputStatement.statementUser,
  120. 'statement': item.type === 'out' ? item.inputStatement.name :item.outputStatement.name,
  121. 'statementState': item.type === 'out' ? item.inputStatement.state : item.outputStatement.state,
  122. 'type': item.type === 'in' ?'Entrada' :'Salida',
  123. 'typeStatement': item.type
  124. });
  125. });
  126. return transfer;
  127. },
  128. getStatementState: function(statement, state){
  129. return _.filter(statement,function(item){
  130. return item.statementState === state;
  131. });
  132. },
  133. getStateTransfer: function(statement, id) {
  134. return _.filter(statement, function(item){
  135. return item.id === id;
  136. });
  137. },
  138. /* Get Statement Confirm*/
  139. getStatementConfirm: function(){
  140. var self = this;
  141. var statement = self.bankStatement[0];
  142. var confirm = [];
  143. var currency = statement.currencystatement;
  144. if (!currency)
  145. return confirm;
  146. _.each(statement.statementConfirm, function(item) {
  147. if ((item.type === 'confirm') && (!item.statementOpen.statementUser))
  148. return false;
  149. confirm.push({
  150. 'id': item.id,
  151. 'date': moment(item.date).format("DD-MM-YYYY"),
  152. 'amountNextOpen': accounting.formatNumber(item.amountNextOpen, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator),
  153. 'statement': item.type === 'open' ?item.statementConfirm.name :item.statementOpen.name,
  154. 'statementUser': item.type === 'open' ?item.statementConfirm.statementUser :item.statementOpen.statementUser,
  155. 'messege': 'Saldo de Apertura',
  156. });
  157. })
  158. return confirm;
  159. },
  160. /*Modal */
  161. showModal: function() {
  162. var self = this;
  163. var defer =$.Deferred();
  164. var results = true;
  165. var transfer = self.getTransfer();
  166. var confirm = self.getStatementConfirm();
  167. var modal = QWeb.render('ModalStatementUtility.Cancel',{
  168. 'transfer': transfer,
  169. 'confirm': confirm
  170. });
  171. $('.openerp_webclient_container').after(modal);
  172. $('.expired-account-modal').modal();
  173. /* Transferencia */
  174. var cancelTransferMessege = $('.expired-account-modal').find('.cancel-transfer-messege');
  175. var tableTransfer = $('.expired-account-modal').find('.table-tbody-transfer').find('tr');
  176. /* confirm */
  177. var cancelConfirmMessege = $('.expired-account-modal').find('.cancel-confirm-messege');
  178. /* Motivo */
  179. var messegeCancel = $('.expired-account-modal').find('.messege-cancel');
  180. /* button */
  181. var buttonSave = $('.expired-account-modal').find('.button-save');
  182. if (!transfer.length)
  183. $('.expired-account-modal').find('.cancel-transfer').css('display','none');
  184. if (!confirm.length)
  185. $('.expired-account-modal').find('.cancel-confirm').css('display','none');
  186. _.each(tableTransfer, function(tr) {
  187. var idTransfer = (($(tr).children()[0]).textContent).trim();
  188. var stateTransfer = self.getStateTransfer(transfer, parseInt(idTransfer));
  189. if (!stateTransfer.length)
  190. return false;
  191. if (stateTransfer[0].statementState === 'confirm'){
  192. $(tr).css('color','red')
  193. }
  194. });
  195. /* Caja Cerrada */
  196. stateStatement = self.getStatementState(transfer, 'confirm');
  197. cancelTransferMessege.css('display','none');
  198. cancelTransferMessege.text("");
  199. if (stateStatement.length)
  200. cancelTransferMessege.css('display','flex');
  201. cancelTransferMessege.text("Existe "+stateStatement.length+" caja cerrada ");
  202. /*Click buttonSave*/
  203. buttonSave.click(function(e) {
  204. if (!(messegeCancel.val().trim())){
  205. instanceWeb.notification.do_warn("Atencion", "Debes ingresar el motivo para continuar.");
  206. messegeCancel.css('border-color','red');
  207. messegeCancel.focus();
  208. return false;
  209. }
  210. messegeCancel.css('border-color','#ccc');
  211. cancel = {
  212. 'statementId': self.id,
  213. 'messege':messegeCancel.val()
  214. };
  215. self.cancelStatement(cancel).then(function(resultsCancel) {
  216. return resultsCancel;
  217. }).then(function(resultsCancel) {
  218. self.reloadPage();
  219. self.removeModal(e);
  220. if (!resultsCancel)
  221. results = false;
  222. });
  223. defer.resolve(results);
  224. });
  225. /* Click Cerrar */
  226. $('.expired-account-modal').on('hidden.bs.modal', function(e) {
  227. results = false;
  228. defer.resolve(results);
  229. self.removeModal(e);
  230. });
  231. return defer;
  232. },
  233. cancelStatement:function(values){
  234. var bankStatementUser = new instanceWeb.Model('account.bank.statement');
  235. return bankStatementUser.call('eiru_statement_cancel',[values], {
  236. context: new instanceWeb.CompoundContext()
  237. });
  238. }
  239. });
  240. if (openerp.web && openerp.web.FormView) {
  241. openerp.web.FormView.include({
  242. load_record: function(record) {
  243. this._super.apply(this, arguments);
  244. if (this.model !== 'account.bank.statement')
  245. return;
  246. openerp.parentInstanceStatementCancel = this;
  247. if (openerp.widgetInstanceStatementCancel) {
  248. openerp.widgetInstanceStatementCancel.updateId(record.id);
  249. if (this.$el.find('.button-statement-cancel').length !== 0 )
  250. return ;
  251. }
  252. if (this.$el.find('.button-statement-cancel').length !== 0 )
  253. return;
  254. openerp.widgetInstanceStatementCancel = new openerp.EiruStatementCancel(this);
  255. var element =this.$el.find('.oe_form').find('.eiru-statement-utility-cancel');
  256. openerp.widgetInstanceStatementCancel.appendTo(element[0]);
  257. openerp.widgetInstanceStatementCancel.updateId(record.id);
  258. }
  259. });
  260. }
  261. })();