payslip_generator.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. openerp.eiru_payslip_generator = function(instance, local) {
  2. local.widgetInstance = null;
  3. local.parentInstance = null;
  4. local.PayslipGeneratorWidget = instance.Widget.extend({
  5. template: 'eiru_payslip_generator.PayslipWidget',
  6. id: undefined,
  7. init: function(parent) {
  8. this._super(parent);
  9. this.buttons = parent.$buttons;
  10. },
  11. start: function() {
  12. var self = this;
  13. this.$el.click(function() {
  14. self.fectchInitial()
  15. });
  16. self.buttons.click(function(e) {
  17. /* E (Editar) */
  18. if (e.target.accessKey === 'E')
  19. self.$el.css('display','none');
  20. /* C (Crear) */
  21. if (e.target.accessKey === 'C')
  22. self.$el.css('display','none');
  23. /* S (Guarrdar) */
  24. if (e.target.accessKey === 'S')
  25. self.$el.css('display','flex');
  26. /* D (Cancelar) */
  27. if (e.target.accessKey === 'D')
  28. self.$el.css('display','flex');
  29. });
  30. },
  31. updateId: function(id) {
  32. var self = this;
  33. self.id = id;
  34. },
  35. fectchInitial: function() {
  36. var self = this;
  37. self.fectchGenerateNomina().then(function(payslip) {
  38. return payslip;
  39. }).then(function(payslip) {
  40. local.parentInstance.reload();
  41. if (!payslip)
  42. instance.web.notification.do_warn("Atención","No existe nomina para ser generada, en el periodo seleccionado");
  43. })
  44. },
  45. fectchGenerateNomina: function() {
  46. var self = this;
  47. var defer = $.Deferred();
  48. var hr_payslip = new instance.web.Model('hr.payslip');
  49. hr_payslip.call('generate_payroll_eiru',[self.id], {
  50. context: new instance.web.CompoundContext()
  51. }).then(function(results) {
  52. defer.resolve(results);
  53. });
  54. return defer;
  55. },
  56. });
  57. if (instance.web && instance.web.FormView) {
  58. instance.web.FormView.include({
  59. load_record: function(record) {
  60. this._super.apply(this, arguments);
  61. if (this.model !== 'hr.payslip.run')
  62. return;
  63. local.parentInstance = this;
  64. if (local.widgetInstance) {
  65. local.widgetInstance.updateId(record.id);
  66. }
  67. if (this.$el.find('.eiru-payslip').length !== 0 )
  68. return;
  69. local.widgetInstance = new local.PayslipGeneratorWidget(this);
  70. var elemento = this.$el.find('.oe_form_sheet.oe_form_sheet_width');
  71. elemento = elemento.find('.oe_right.oe_button_box.eiru-payslip-generator');
  72. local.widgetInstance.appendTo(elemento);
  73. local.widgetInstance.updateId(record.id);
  74. }
  75. });
  76. }
  77. }