فهرست منبع

[ADD] Actualizar/Eliminar faltas de funcionario

adrielso 7 سال پیش
والد
کامیت
bee7630270

+ 20 - 0
model/payslip_faults.py

@@ -53,3 +53,23 @@ class HrPayslip(models.Model):
         recompute_sheet = self.recompute_sheet(values['id'])
 
         return True if recompute_sheet else False
+
+    @api.model
+    def unlink_payslip_worked(self, values):
+        worked_days = self.env['hr.payslip.worked_days'].search([('payslip_id', '=', values['id']),('id', '=', values['worked_id'])])
+        unlink_work = worked_days.unlink()
+
+        return True if unlink_work else False
+
+    @api.model
+    def write_payslip_worked(self, values):
+        worked_days = self.env['hr.payslip.worked_days'].search([('payslip_id', '=', values['id']),('id', '=', values['worked_id'])])
+
+        worked_update = {
+            'name': values['name'],
+            'number_of_days': values['days']
+        }
+
+        worked_days.write(worked_update)
+
+        return True if worked_days else False

+ 18 - 9
static/src/css/style.css

@@ -17,6 +17,14 @@
 .oe_stat_button.btn.btn-default.refresh-faults {
     width: 40px !important;
 }
+.fault-dialog {
+    z-index: 1050 !important;
+}
+
+/* table */
+.expired-account-modal .table-row-select {
+     background: #d4e2f3  !important;
+}
 
 /*.eiru-payslip-utility {
     width: auto !important;
@@ -57,22 +65,23 @@
     position: relative;
 }*/
 
-/*.expired-account-modal .modal-head-wrapper-payslip {
+.expired-account-modal .modal-head-wrapper-payslip {
     width: 100%;
-}*/
+}
 
-/*.expired-account-modal .modal-item-payslip {
+.expired-account-modal .modal-item-payslip {
     width: 100%;
-    height: 90px;
+    height: 140px;
     overflow-y: auto;
-}*/
+}
 /*id*/
-/*.expired-account-modal .payslip-table table tbody tr td:nth-child(1){
+.expired-account-modal .payslip-table table tbody tr td:nth-child(1){
     display: none;
-}*/
-/*.expired-account-modal table thead tr th:nth-child(1){
+}
+.expired-account-modal table thead tr th:nth-child(1){
     display: none;
-}*/
+}
+
 
 /*.expired-account-modal .payslip-table table tbody tr td:nth-child(2){
     width: 40px ;

+ 178 - 11
static/src/js/payslip_utility.js

@@ -6,6 +6,9 @@
 
     openerp.PayslipUtility = openerp.Widget.extend({
         template: 'payslip_add.FaultsWidget',
+        row_id_select: undefined,
+        workedDays: [],
+
         /* init */
         init: function (parent) {
             this._super(parent);
@@ -23,9 +26,10 @@
             });
             // Edit/ unlink
             editFaults.click(function() {
+                self.fectchUpdateFaults();
             });
             // Update
-            refreshFaults.click(function(){
+            refreshFaults.click(function() {
                 self.fectchRecomputeSheet();
             })
         },
@@ -44,10 +48,10 @@
             $('.modal-backdrop').remove();
         },
         /* ---------------------------------------------------------------------
-         * Description: Recalcular faltas de funcionario
-         * -------------------------------------------------------------------*/
-         /* Description: Función Inicial para recalcular las faltas*/
-         fectchRecomputeSheet: function() {
+        ** Description: Recalcular faltas de funcionario
+        ** -------------------------------------------------------------------*/
+        /* Description: Función Inicial para recalcular las faltas*/
+        fectchRecomputeSheet: function() {
             var self= this;
             self.$el.find('.refresh-faults').attr("disabled", true);
             self.recomputeSheet().then(function(results) {
@@ -57,8 +61,8 @@
                 self.reloadLine()
             });
          },
-         /* Description: Función para recalcular las faltas */
-         recomputeSheet: function(){
+        /* Description: Función para recalcular las faltas */
+        recomputeSheet: function(){
              var self = this;
              var defer = $.Deferred();
              var recomputePayslip = new openerp.web.Model('hr.payslip');
@@ -72,8 +76,8 @@
              return defer;
          },
         /* ---------------------------------------------------------------------
-         * Description: Crear Faltas
-         * -------------------------------------------------------------------*/
+        ** Description: Crear Faltas
+        ** -------------------------------------------------------------------*/
         /* Description: Función Inicial Add Faltas */
         fectchAddFaults: function() {
             var self = this;
@@ -148,8 +152,170 @@
             return defer;
         },
         /* ---------------------------------------------------------------------
-         * Description: Editar/Remover Faltas
-         * -------------------------------------------------------------------*/
+        ** Description: Editar/Remover Faltas
+        ** -------------------------------------------------------------------*/
+        /* Description: Funcion  Inicial Modify/Unlink Faltas*/
+        fectchUpdateFaults: function() {
+            var self = this;
+
+            self.fectchWorkedDays().then(function(workedDays) {
+                return workedDays;
+            }).then(function(workedDays) {
+                self.workedDays = workedDays;
+                return self.showPayslipModifyFaults();
+            }).then(function(results){
+                return self.recomputeSheet();
+            }).then(function(){
+                return self.reloadLine()
+            })
+         },
+        /* Description : Consultar hr.payslip.worked_days */
+        fectchWorkedDays: function() {
+            var self = this;
+            var defer = $.Deferred();
+
+            var fields = ['id', 'name', 'code','number_of_days', 'number_of_hours', 'payslip_id', 'contract_id'];
+            var domain = [['payslip_id', '=', self.id],['code', '=', 'FALTAS']];
+            var worker_days = new openerp.web.Model('hr.payslip.worked_days');
+
+            worker_days.query(fields).filter(domain).all().then(function(results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+         },
+        /* Description: */
+        showPayslipModifyFaults: function() {
+            var self = this;
+            var defer =$.Deferred();
+            var row_modify = null;
+            var results = true;
+
+            var modal = QWeb.render('EiruPayslipModifyFaults',{
+                workedDays: self.workedDays
+            });
+
+            $('.openerp_webclient_container').after(modal);
+            $('.expired-account-modal').modal();
+
+            $('.expired-account-modal').find('.modify-faults').attr("disabled", true);
+             /*  Close modal */
+            $('.expired-account-modal').on('hidden.bs.modal', function (e) {
+                results = true;
+                defer.resolve(results)
+                self.removeModal(e);
+            });
+            /* Eliminar */
+            var unlink_faults= $('.expired-account-modal').find('.unlink-faults')
+            unlink_faults.click(function(e){
+                 var unlink_row = parseInt($(e.target).closest('td').closest('tr').children()[0].textContent);
+                 $(e.target).closest('td').closest('tr').remove()
+
+                 self.unlink_faults_payslip(unlink_row).then(function(results) {
+                    defer.resolve(results);
+                 })
+
+             })
+
+            /* Modificar*/
+            var contenido = $('.expired-account-modal').find('.table-tbody').find('tr');
+            contenido.click(function (e) {
+                row_modify = $(e.target);
+                if (($(e.target).index() === 3) || ($(e.target).index() === 0))
+                    return
+
+                $(contenido).removeClass('table-row-select');
+                $(e.target).closest('tr').addClass('table-row-select');
+
+                self.row_id_select = parseInt($(e.target).closest('tr').children()[0].textContent);
+
+                var descrip = $(e.target).closest('tr').children()[1].textContent;
+                var worked_days = $(e.target).closest('tr').children()[2].textContent;
+
+                $('.expired-account-modal').find('.payslip-details-modify').val(descrip.trim())
+                $('.expired-account-modal').find('.payslip-number-days-modify').val(parseInt(worked_days))
+                $('.expired-account-modal').find('.modify-faults').removeAttr("disabled");
+            });
+
+            /* Click boton Modificar */
+            var modify = $('.expired-account-modal').find('.modify-faults');
+            modify.click(function(e){
+                var descrip = $('.expired-account-modal').find('.payslip-details-modify').val()
+                var number = $('.expired-account-modal').find('.payslip-number-days-modify').val()
+
+                if (!descrip){
+                    openerp.web.notification.do_warn("Atención","Definir un motivo de la falta .");
+                    $('.expired-account-modal').find('.payslip-details-modify').css('border-color','red');
+                    return
+                } else {
+                    $('.expired-account-modal').find('.payslip-details-modify').css('border-color','#ccc');
+                }
+                if (number <= 0){
+                    openerp.web.notification.do_warn("Atención","Días no trabajado, debe ser mayor que 0.");
+                    $('.expired-account-modal').find('.payslip-number-days-modify').css('border-color','red');
+                    return
+                } else {
+                    $('.expired-account-modal').find('.payslip-number-days-modify').css('border-color','#ccc');
+                }
+
+
+                self.write_payslip_worked(self.row_id_select, descrip, number).then(function(results) {
+                   defer.resolve(results);
+                })
+
+                /* Actualizar en el Grid */
+                row_modify.closest('tr').children()[1].textContent = descrip
+                row_modify.closest('tr').children()[2].textContent = number
+
+                $('.expired-account-modal').find('.payslip-details-modify').val("")
+                $('.expired-account-modal').find('.payslip-number-days-modify').val(0)
+
+                $('.expired-account-modal').find('.modify-faults').attr("disabled", true);
+            })
+
+            return defer
+         },
+        /* Description: Eliminar Falta*/
+        unlink_faults_payslip: function(id) {
+            var self = this;
+            var defer = $.Deferred();
+
+            var worked_days = new openerp.web.Model('hr.payslip');
+            worked_days.call('unlink_payslip_worked',
+            [
+                {
+                    id: self.id,
+                    worked_id: id
+                }
+            ],{
+                context: new openerp.web.CompoundContext()
+            }).then(function(results) {
+                defer.resolve(results);
+            });
+            return defer;
+        },
+        /* Actualizar worked_days */
+        write_payslip_worked: function(id, name, number_of_days) {
+            var self = this;
+            var defer = $.Deferred();
+
+            var worked_days = new openerp.web.Model('hr.payslip');
+            worked_days.call('write_payslip_worked',
+            [
+                {
+                    id: self.id,
+                    worked_id: id,
+                    name: name,
+                    days: number_of_days
+                }
+            ],{
+                context: new openerp.web.CompoundContext()
+            }).then(function(results) {
+                defer.resolve(results);
+            });
+            return defer;
+        },
+
 
     });
 
@@ -183,4 +349,5 @@
             }
         });
     }
+
 })();

+ 0 - 20
static/src/xml/eiru_payslip_utility.xml

@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<templates xml:space="preserve">
-    <t t-name="eiru_payslip_utility.PayslipWidget">
-        <div class="payslip-utility">
-            <button class="oe_stat_button btn btn-default oe_inline payslip-utility-adelanto">
-                <div class="stat_button_icon fa fa-exchange fa-2x"></div>
-                <div>Adelantos</div>
-            </button>
-            <button class="oe_stat_button btn btn-default oe_inline payslip-utility-faltas">
-                <div class="stat_button_icon fa fa-exchange fa-2x"></div>
-                <div>Faltas</div>
-            </button>
-            <button class="oe_stat_button btn btn-default oe_inline payslip-utility-delet">
-                <div class="stat_button_icon fa fa-exchange fa-2x"></div>
-                <div>deletar</div>
-            </button>
-        </div>
-  </t>
-</templates>

+ 0 - 39
static/src/xml/hr_payslip_table.xml

@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<template xml:space="preserve">
-    <t t-name="EiruPayslipUtilityTable">
-        <div class=" oe_view_manager_body payslip-table">
-            <div class="modal-head-wrapper-payslip">
-                <table class="oe_list_content">
-                    <thead >
-                        <tr class="oe_list_header_columns" t-foreach="faultsHeader" t-as="head" >
-                            <th class="oe_list_header_char oe_sortable"><t t-esc="head_value.colum1"/></th>
-                            <th class="oe_list_header_char oe_sortable"></th>
-                            <th class="oe_list_header_char oe_sortable"><t t-esc="head_value.colum3"/></th>
-                            <th class="oe_list_header_char oe_sortable"><t t-esc="head_value.colum4"/></th>
-                        </tr>
-                    </thead>
-                </table>
-            </div>
-            <div class="modal-item-payslip">
-                <table class="oe_list_content">
-                    <tbody class="table-tbody">
-                        <tr t-foreach="faultsData" t-as="field">
-                            <td>
-                                <t t-esc="field_value.id"/>
-                            </td>
-                            <td>
-                                <input type="checkbox"></input>
-                            </td>
-                            <td>
-                                <t t-esc="field_value.description"/>
-                            </td>
-                            <td>
-                                <t t-esc="field_value.quantity"/>
-                            </td>
-                        </tr>
-                    </tbody>
-                </table>
-            </div>
-        </div>
-    </t>
-</template>

+ 0 - 174
static/src/xml/hr_payslip_utility.xml

@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<template xml:space="preserve">
-    <t t-name="EiruPayslipUtilityModal">
-        <div class="modal in expired-account-modal" tabindex="-1" role="dialog">
-            <div class="modal-dialog modal-lg" role="document">
-                <div class="modal-content openerp">
-                    <!-- title  -->
-                    <div class="modal-header">
-                        <button type="button" class="close" data-dismiss="modal" aria-label="Close" aria-hidden="true">×</button>
-                        <h3 class="modal-title">
-                            Faltas / Adelantos
-                        </h3>
-                    </div>
-                    <!-- Body -->
-                    <div class="modal-body">
-                        <!-- Detalles del funcionario -->
-                        <div>
-                            <div class="row">
-                                <label class="payslip-details-title">
-                                    Detalles del funcionario
-                                </label>
-                            </div>
-                            <div class="row">
-                                <!-- Referenica de la nomina -->
-                                <div class="col-xs-6">
-                                    <input class="detallis-employee-input long" value="Nómina salarial de Adrielso Kunert para octubre-2017" readonly="readonly"></input>
-                                </div>
-                                <!-- referencia slip-->
-                                <div class="col-xs-6">
-                                    <label class="detallis-employee-label">
-                                        Referencia :
-                                    </label>
-                                    <input class="detallis-employee-input short" readonly="readonly" value="slip/235"></input>
-                                </div>
-                                <!-- employee -->
-                                <div class="col-xs-6">
-                                    <label class="detallis-employee-label">
-                                        Empleado :
-                                    </label>
-                                    <input class="detallis-employee-input short" value="Adrielso Kunert Bueno " readonly="readonly"></input>
-                                </div>
-                                <!-- periodo -->
-                                <div class="col-xs-6">
-                                    <label class="detallis-employee-label">
-                                        Período :
-                                    </label>
-                                    <input class="detallis-employee-input short" readonly="readonly" value="17-09-2017 - 16-10-2017"></input>
-                                </div>
-                            </div>
-                        </div>
-                        <hr class="detallis-employee-separator"/>
-                        <!-- Faltas -->
-                        <div>
-                            <div class="row payslip-title">
-                                <label class="payslip-details-title">Faltas</label>
-                            </div>
-                            <div class="row">
-                                <div class="col-xs-8">
-                                    <label class="detallis-employee-label">Descripción</label>
-                                </div>
-                                <div class="col-xs-2">
-                                    <label class="detallis-employee-label">Días no trabajado</label>
-                                </div>
-                                <div class="col-xs-8 payslip-faults">
-                                    <input class="faults-input payslip-details"></input>
-                                </div>
-                                <div class="col-xs-2 payslip-faults">
-                                    <input class="faults-input payslip-number-days" type="number" value="0"></input>
-                                </div>
-                                <div class="col-xs-2 payslip-faults">
-                                    <button type="button" class="oe_button oe_form_button oe_highlight add-faults">Adicionar</button>
-                                </div>
-                            </div>
-                            <div class="row">
-                                <t t-call="EiruPayslipUtilityTable"/>
-                            </div>
-                        </div>
-                        <!-- Adelantos -->
-                        <!-- <hr class="detallis-employee-separator"/>
-                        <div>
-                            <div class="row payslip-title">
-                                <label class="payslip-details-title">
-                                    Adelantos
-                                </label>
-                            </div>
-                            <div class="row">
-                                <div class="col-xs-8">
-                                    <label class="detallis-employee-label">
-                                        Descripción
-                                    </label>
-                                </div>
-                                <div class="col-xs-2">
-                                    <label class="detallis-employee-label">
-                                        Importe
-                                    </label>
-                                </div>
-                                <div class="col-xs-8 payslip-faults">
-                                    <input class="faults-input"></input>
-                                </div>
-                                <div class="col-xs-2 payslip-faults">
-                                    <input class="faults-input" type="number" value="0"></input>
-                                </div>
-                                <div class="col-xs-2 payslip-faults">
-                                    <button type="button" class="oe_button oe_form_button oe_highlight add-faults">
-                                        Adicionar
-                                    </button>
-                                </div>
-                            </div>
-                            <div class="row">
-                                <t t-call="EiruPayslipUtilityTable"/>
-                            </div>
-                        </div> -->
-
-                    </div>
-                    <!-- Pie de Pagina -->
-                    <div class="modal-footer payslip-footer">
-                        <button type="button" class="oe_button oe_form_button oe_link dismmis-modal" data-dismiss="modal">Cancelar</button>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </t>
-</template>
-<!-- <hr/>
-<div class="payslip-adelanto">
-    <button type="button" class="oe_button oe_form_button oe_highlight payments-payslip">Pagar</button>
-</div> -->
-<!-- <div class="row" t-foreach="dataName" t-as="head">
-    <div class="col-xs-12">
-        <label class="label-descrip payslip-name">
-            <t t-esc="head_value.name"/>
-        </label>
-    </div>
-</div> -->
-<!-- <div class="row" t-foreach="data" t-as="data">
-    <div class="col-xs-6">
-        <label class="label-descrip">Empleado : </label>
-        <span class="details-employee">
-            <t t-esc="data_value.employee"/>
-        </span>
-    </div>
-    <div class="col-xs-6">
-        <label class="label-descrip">Periodo : </label>
-        <span class="details-employee">
-            <t t-esc="data_value.periodo"/>
-        </span>
-    </div>
-    <div class="col-xs-6">
-        <label class="label-descrip">Referencia : </label>
-        <span class="details-employee">
-            <t t-esc="data_value.ref"/>
-        </span>
-    </div>
-    <div class="col-xs-6">
-        <label class="label-descrip labe-input">Monto a Pagar : </label>
-        <input class="details-employee amount-net" readonly='readonly' t-attf-value="{{ data.amount }}"></input>
-    </div>
-</div> -->
-<!-- <div class="row">
-    <div class="col-xs-6">
-        <label class="label-descrip labe-input">Método de pago: </label>
-        <select class="current-journal">
-            <t t-foreach="journal" t-as="journal">
-                <option t-attf-value="{{ journal_value.id }}" >
-                    <t t-esc="journal_value.name"/>
-                </option>
-            </t>
-        </select>
-    </div>
-    <div class="col-xs-6">
-        <label class="label-descrip labe-input">Referencia de pago: </label>
-        <input type="text" class="journal-ref"></input>
-    </div>
-</div> -->

+ 73 - 0
static/src/xml/modal_payslip_modify_faults.xml

@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<template xml:space="preserve">
+    <t t-name="EiruPayslipModifyFaults">
+        <div class="modal in expired-account-modal" tabindex="-1" role="dialog">
+            <div class="modal-dialog modal-lg" role="document">
+                <div class="modal-content openerp">
+                    <!-- title  -->
+                    <div class="modal-header">
+                        <button type="button" class="close" data-dismiss="modal" aria-label="Close" aria-hidden="true">×</button>
+                        <h3 class="modal-title">
+                            Modificar / Eliminar faltas
+                        </h3>
+                    </div>
+                    <!-- Body -->
+                    <div class="modal-body">
+                        <div>
+                            <div class="row">
+                                <div class="col-xs-8">
+                                    <label class="detallis-employee-label">Motivo de la falta</label>
+                                </div>
+                                <div class="col-xs-2">
+                                    <label class="detallis-employee-label">Días no trabajado</label>
+                                </div>
+                                <div class="col-xs-8 payslip-faults">
+                                    <input class="faults-input payslip-details-modify"></input>
+                                </div>
+                                <div class="col-xs-2 payslip-faults">
+                                    <input class="faults-input payslip-number-days-modify" type="number" value="0"></input>
+                                </div>
+                                <div class="col-xs-2 payslip-faults">
+                                    <button type="button" class="oe_button oe_form_button oe_highlight modify-faults">Modificar</button>
+                                </div>
+                            </div>
+                        </div>
+                        <hr class="detallis-employee-separator"/>
+                        <!-- Table -->
+                        <div class=" oe_view_manager_body payslip-table">
+                            <div class="modal-head-wrapper-payslip">
+                                <table class="oe_list_content">
+                                    <thead >
+                                        <tr class="oe_list_header_columns"  >
+                                            <th class="oe_list_header_char oe_sortable"></th>
+                                            <th class="oe_list_header_char oe_sortable">Motivo de la falta</th>
+                                            <th class="oe_list_header_char oe_sortable">Días no trabajado</th>
+                                            <th class="oe_list_header_char oe_sortable"></th>
+                                        </tr>
+                                    </thead>
+                                </table>
+                            </div>
+                            <div class="modal-item-payslip">
+                                <table class="oe_list_content">
+                                    <tbody class="table-tbody">
+                                        <tr t-foreach="workedDays" t-as="worked">
+                                            <td><t t-esc="worked_value.id"/></td>
+                                            <td><t t-esc="worked_value.name"/></td>
+                                            <td><t t-esc="worked_value.number_of_days"/></td>
+                                            <td><div class="fa fa-trash unlink-faults"></div></td>
+                                        </tr>
+                                    </tbody>
+                                </table>
+                            </div>
+                            <!-- <div class="fault-dialog"></div> -->
+                        </div>
+                    </div>
+                    <!-- Pie de Pagina -->
+                    <div class="modal-footer payslip-footer">
+                        <button type="button" class="oe_button oe_form_button oe_link dismmis-modal" data-dismiss="modal">Cancelar</button>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </t>
+</template>

+ 0 - 1
views/templates.xml

@@ -3,7 +3,6 @@
         <template id="eiru_payslip_utility.eiru_assets" name="aeiru_payslip_payments_eiru_assets" inherit_id="eiru_assets.assets">
             <xpath expr="." position="inside">
                 <link rel="stylesheet" href="/eiru_payslip_utility/static/src/css/style.css"/>
-                <!-- <script type="text/javascript" src="/eiru_payslip_utility/static/src/js/eiru_payslip_utility.js"/> -->
                 <script type="text/javascript" src="/eiru_payslip_utility/static/src/js/payslip_utility.js"/>
             </xpath>
         </template>