Selaa lähdekoodia

[ADD] Commir inicial

adrielso 7 vuotta sitten
commit
348f1e10a8

+ 2 - 0
.gitignore

@@ -0,0 +1,2 @@
+*.pyc
+.scannerwork

+ 3 - 0
README.md

@@ -0,0 +1,3 @@
+# Eiru generador de nómina
+
+Modulo de generación automática de nóminas de funcionarios

+ 2 - 0
__init__.py

@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+from model import eiru_payslip_generator

+ 23 - 0
__openerp__.py

@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+{
+    'name': 'Eiru generador de nómina',
+    'version': '1.0',
+    'description': """
+
+Modulo de generación automática de nóminas de funcionarios.
+
+	""",
+    'author': 'Adrielso Kunert',
+    'category': 'hr',
+    'depends': ['hr','account', 'base', 'hr_payroll'],
+    'data': [
+        'view/templates.xml',
+        'view/payslip_generator.xml',
+    ],
+    'qweb': [
+        'static/src/xml/*.xml',
+    ],
+
+    'installable': True,
+    'auto_install': False,
+ }

+ 0 - 0
model/__init__.py


+ 40 - 0
model/eiru_payslip_generator.py

@@ -0,0 +1,40 @@
+# -*- coding: utf-8 -*-
+from openerp import api, fields, models
+
+class EiruPayslipGenerator(models.Model):
+    _inherit = 'hr.payslip'
+
+    @api.model
+    def generate_payroll_eiru(self, values):
+        payslip = self.env['hr.payslip']
+        payslip_run = self.env['hr.payslip.run'].search([('id', 'in', [values])])
+        employee = self.env['hr.employee'].search([('active', '=', True)])
+        payslip_ids = []
+
+        for emp in employee:
+            slip_data = self.onchange_employee_id(payslip_run.date_start, payslip_run.date_end, emp.id)
+            if  not self.env['hr.payslip'].search([('employee_id', '=', emp.id), ('date_from', '=', payslip_run.date_start),  ('date_to', '=', payslip_run.date_end)]):
+                res = {
+                    'employee_id': emp.id,
+                    'name': slip_data['value'].get('name', False),
+                    'struct_id': slip_data['value'].get('struct_id', False),
+                    'contract_id': slip_data['value'].get('contract_id', False),
+                    'payslip_run_id': values,
+                    'input_line_ids': [(0, 0, x) for x in slip_data['value'].get('input_line_ids', False)],
+                    'worked_days_line_ids': [(0, 0, x) for x in slip_data['value'].get('worked_days_line_ids', False)],
+                    'date_from': payslip_run.date_start,
+                    'date_to': payslip_run.date_end,
+                    'credit_note': payslip_run.credit_note,
+                    'journal_id' : payslip_run.journal_id.id
+                }
+                # Create nominas
+                id_payslip = payslip.create(res)
+                payslip_ids.append(id_payslip)
+
+                id_payslip.hr_verify_sheet()
+                id_payslip.process_sheet()
+
+        if payslip_ids:
+            payslip_run.write({'state': 'close'})
+
+        return True if payslip_ids else False

+ 5 - 0
sonar-project.properties

@@ -0,0 +1,5 @@
+sonar.projectKey=eiru:payslip:generator
+sonar.projectName=eiru_payslip_generator
+sonar.projectVersion=1.0
+sonar.sources=.
+sonar.javascript.globals=openerp

BIN
static/descripcion/icon.png


+ 4 - 0
static/src/css/style.css

@@ -0,0 +1,4 @@
+.eiru-payslip-generator {
+    width: auto !important;
+    height: auto !important;
+}

+ 77 - 0
static/src/js/payslip_generator.js

@@ -0,0 +1,77 @@
+openerp.eiru_payslip_generator = function(instance, local) {
+
+    local.widgetInstance = null;
+    local.parentInstance = null;
+
+    local.PayslipGeneratorWidget = instance.Widget.extend({
+        template: 'eiru_payslip_generator.PayslipWidget',
+        id: undefined,
+
+        init: function(parent) {
+            this._super(parent);
+        },
+        start: function() {
+            var self = this;
+            this.$el.click(function(){
+                self.fectchInitial()
+            });
+        },
+        updateId: function(id) {
+            var self = this;
+            self.id = id;
+        },
+
+        fectchInitial: function() {
+            var self = this;
+            self.fectchGenerateNomina().then(function(payslip) {
+                return payslip;
+            }).then(function(payslip) {
+                local.parentInstance.reload();
+                if (!payslip) {
+                    instance.web.notification.do_warn("Atención","No existe nomina para ser generada, en el periodo seleccionado")
+                }
+            })
+        },
+        fectchGenerateNomina: function() {
+            var self = this;
+            var defer = $.Deferred();
+            var hr_payslip = new instance.web.Model('hr.payslip');
+
+            hr_payslip.call('generate_payroll_eiru',[self.id], {
+                context: new instance.web.CompoundContext()
+            }).then(function(results) {
+                defer.resolve(results);
+            });
+            return defer;
+        },
+    });
+
+    if (instance.web && instance.web.FormView) {
+        instance.web.FormView.include({
+            load_record: function(record) {
+                this._super.apply(this, arguments);
+
+                if (this.model !== 'hr.payslip.run')
+                    return;
+
+                local.parentInstance = this;
+
+                if (local.widgetInstance) {
+                    local.widgetInstance.updateId(record.id);
+                }
+
+                if (this.$el.find('.eiru-payslip').length !== 0 )
+                    return;
+
+                local.widgetInstance = new local.PayslipGeneratorWidget(this);
+
+                var elemento = this.$el.find('.oe_form_sheet.oe_form_sheet_width');
+                elemento = elemento.find('.oe_right.oe_button_box.eiru-payslip-generator');
+
+                local.widgetInstance.appendTo(elemento);
+                local.widgetInstance.updateId(record.id);
+
+            }
+        });
+    }
+}

+ 16 - 0
static/src/xml/eiru_payslip_generator.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<templates xml:space="preserve">
+    <t t-name="eiru_payslip_generator.PayslipWidget">
+        <div class="eiru-payslip" id="pagos">
+            <button class="eiru-generador oe_stat_button btn btn-default oe_inline" id="generar">
+                <div class="stat_button_icon fa fa-cogs"></div>
+                <div>Generar Nómina</div>
+            </button>
+             <!-- <button class="eiru-payments oe_stat_button btn btn-default oe_inline" id='payments'>
+                <div class="stat_button_icon fa fa-money"></div>
+                <div>Pagar Nómina</div>
+            </button> -->
+        </div>
+  </t>
+</templates>

+ 15 - 0
view/payslip_generator.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+	<data>
+        <record id="view_eiru_payslip_generator" model="ir.ui.view">
+            <field name="name">view.eiru.payslip.generator</field>
+            <field name="model">hr.payslip.run</field>
+            <field name="inherit_id" ref="hr_payroll.hr_payslip_run_form"/>
+            <field name="arch" type="xml">
+                <label for="name" position="before">
+                    <div class="oe_right oe_button_box eiru-payslip-generator" attrs="{'invisible': [('state','!=','draft')]}" ></div>
+                </label>
+            </field>
+        </record>
+	</data>
+</openerp>

+ 10 - 0
view/templates.xml

@@ -0,0 +1,10 @@
+<openerp>
+    <data>
+        <template id="eiru_payslip_generator.eiru_assets" name="aeiru_payslip_generator_eiru_assets" inherit_id="eiru_assets.assets">
+            <xpath expr="." position="inside">
+                <link rel="stylesheet" href="/eiru_payslip_generator/static/src/css/style.css"/>
+                <script type="text/javascript" src="/eiru_payslip_generator/static/src/js/payslip_generator.js"/>
+            </xpath>
+        </template>
+    </data>
+</openerp>