Forráskód Böngészése

[ADD] commit inicial

Adrielso 7 éve
commit
03380e64e7

+ 3 - 0
__init__.py

@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from . import  model

BIN
__init__.pyc


+ 20 - 0
__openerp__.py

@@ -0,0 +1,20 @@
+# -*- coding ;utf-8 -*-
+{
+    'name': 'Account bank voucher import',
+    'author':  'Adrielso Kunert',
+    'version': '8.0.1.1.0',
+    'category': 'account',
+    'description': "Importar pagos en el registro de caja.",
+    'depends':[ 'account',
+                'eiru_assets'
+              ],
+    'data':   [
+                'views/voucher_import.xml',
+                'views/template.xml',
+              ],
+    'qweb':   [
+                'static/src/xml/*.xml'
+              ],
+
+    'installable': True,
+}

+ 3 - 0
model/__init__.py

@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from . import  account_bank_voucher_import

BIN
model/__init__.pyc


+ 15 - 0
model/account_bank_voucher_import.py

@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+
+from openerp import models, fields, api,  _
+
+
+class account_bank_statement_line(models.Model):
+    _inherit = 'account.bank.statement.line'
+
+    voucher_id = fields.Many2one('account.voucher', 'Voucher', readonly=True)
+
+
+# class account_voucher(models.Model):
+#     _inherit = 'account.voucher'
+#
+#     bank_statement_line_ids = fields.One2many('account.bank.statement.line', 'voucher_id', string="Statement Lines")

BIN
model/account_bank_voucher_import.pyc


BIN
static/description/icon.png


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

@@ -0,0 +1,8 @@
+/*.oe_right.oe_button_box.payslip_import{
+    width: auto;
+    height:auto;
+}*/
+.oe_right.oe_button_box{
+    width: auto;
+    height:auto;
+}

+ 211 - 0
static/src/js/account_bank_voucher_import.js

@@ -0,0 +1,211 @@
+openerp.account_bank_voucher_import = function (instance, local) {
+    local.widgetInstance = null;
+    local.parentInstance = null;
+
+    local.VoucherImportWidget = instance.Widget.extend({
+        template: 'account_bank_voucher_import.VoucherImport',
+        id : undefined,
+        accountStatement : [],
+        statementLine : [],
+        accountVoucher :[],
+        voucherImport : [],
+
+        init: function (parent) {
+            this._super(parent);
+        },
+        // Actualizar id del Objeto
+        updateId : function(id){
+            var self = this;
+            self.id=id;
+        },
+        start: function () {
+            var self = this;
+            this.$el.click(function (e){
+                self.fetchInitial();
+            });
+        },
+        // Iniciar
+        fetchInitial: function(){
+            var self= this;
+
+            self.fetchBankStatement().then(function(accountStatement){
+                return accountStatement;
+            }).then(function(accountStatement){
+                self.accountStatement = accountStatement;
+                return self.fetchBankStatementLine();
+            }).then(function(statementLine){
+                self.statementLine = statementLine;
+                return self.fetchVoucher();
+            }).then(function(accountVouche){
+                self.accountVouche = accountVouche;
+                return self.fetchJoinVoucher();
+            }).then(function(voucherImport){
+                self.voucherImport = voucherImport;
+                return self.insertBankStatementLine();
+            }).then(function(bankLine){
+                local.parentInstance.reload();
+                if (bankLine){
+                    instance.web.notification.do_notify("Felicitación","Has importado los pagos con éxito.");
+                }else{
+                    instance.web.notification.do_warn("Atención ","No tenes pagos que importar en esa caja.");
+                }
+            });
+        },
+        // Registro de Caja
+        fetchBankStatement : function(){
+            var self = this;
+            var defer = $.Deferred();
+            var fields=['id','journal_id'];
+            var domain=[['id','=',self.id]];
+            var statement = new instance.web.Model('account.bank.statement');
+
+            statement.query(fields).filter(domain).all().then(function (results){
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+        // Linea del Registro de Caja
+        fetchBankStatementLine : function(){
+            var self = this;
+            var defer = $.Deferred();
+            var fields=['id','voucher_id'];
+            // var domain=[['statement_id','=',self.id]];
+            var domain=[['voucher_id','!=', false]];
+            var statementLine = new instance.web.Model('account.bank.statement.line');
+            statementLine.query(fields).filter(domain).all().then(function (results){
+            // statementLine.query(fields).all().then(function (results){
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+        //Consultar Voucher
+        fetchVoucher : function(){
+            var self = this;
+            var defer =$.Deferred();
+
+            var journal = _.flatten(_.map(self.accountStatement,function(map){
+                return map.journal_id[0];
+            }));
+            var voucher =_.flatten(_.map(self.statementLine,function(map){
+                return map.voucher_id[0]
+            }));
+            //
+            var fields =['id','partner_id','amount','journal_id','reference','move_id','account_id','state'];
+            var domain =[['state','=','posted'],['journal_id','in',journal],["id",'not in',voucher]];
+            var accountVouche = new instance.web.Model('account.voucher');
+
+            accountVouche.query(fields).filter(domain).all().then(function(results){
+                defer.resolve(results);
+            });
+            return defer;
+        },
+        // Generar Objeto principal
+        fetchJoinVoucher:function(){
+            var self = this;
+            var defer = $.Deferred();
+            var itemvoucher;
+            var voucherImport=[];
+
+            for (var i = 0; i < self.accountVouche.length; i++) {
+                itemvoucher = self.accountVouche[i];
+                voucherImport.push({
+                                    statement_id : this.id,
+                                    name : itemvoucher.reference,
+                                    partner_id : itemvoucher.partner_id[0],
+                                    amount : itemvoucher.amount,
+                                    voucher_id : itemvoucher.id,
+                                    journal_id : itemvoucher.journal_id[0],
+                                    account_id : itemvoucher.account_id[0],
+                                    journal_entry_id : itemvoucher.move_id[0]
+                                  });
+            }
+            defer.resolve(voucherImport);
+            return defer;
+        },
+        // insertar la Linea
+        insertBankStatementLine : function(){
+            var self =this;
+            var defer = $.Deferred();
+            var accountBanckStatementLine = new instance.web.Model('account.bank.statement.line');
+
+            self.asyncLoopFactory(self.voucherImport.length, function (loop) {
+                var objeto = self.voucherImport[loop.iteration()];
+
+                accountBanckStatementLine.call('create',[objeto], {
+                    context: new instance.web.CompoundContext()
+                }).then(function (results) {
+                    loop.next();
+               });
+             }, function () {
+                defer.resolve(self.voucherImport.length);
+             });
+
+             return defer;
+        },
+        /* ---------------------------------------------------------------------
+        * Description: Async loop util v2 written by Robert Gauto.
+        * --------------------------------------------------------------------*/
+        asyncLoopFactory : function (iterations, func, callback) {
+            var index = 0;
+            var done = false;
+            var loop = {
+                next: function () {
+                    if (done) {
+                        return;
+                    }
+
+                    if (index < iterations) {
+                        index++;
+                        func(loop);
+
+                    } else {
+                        done = true;
+                        callback();
+                    }
+                },
+
+                iteration: function () {
+                    return index - 1;
+                },
+
+                break: function () {
+                    done = true;
+                    callback();
+                }
+            };
+
+            loop.next();
+            return loop;
+        },
+
+    });
+
+    if (instance.web && instance.web.FormView) {
+        instance.web.FormView.include({
+            load_record: function (record) {
+                this._super.apply(this, arguments);
+
+                if (this.model !== 'account.bank.statement') return;
+
+                local.parentInstance = this;
+
+                if (local.widgetInstance) {
+                    local.widgetInstance.updateId(record.id);
+                }
+
+                if (this.$el.find('.import_voucher').length != 0) return;
+
+                local.widgetInstance = new local.VoucherImportWidget(this);
+
+                var elemento = this.$el.find('.oe_form_sheet.oe_form_sheet_width');
+                elemento =  elemento.find('.oe_right.oe_button_box.voucher_import');
+
+                local.widgetInstance.appendTo(elemento);
+                local.widgetInstance.updateId(record.id);
+            }
+        });
+    }
+
+}

+ 10 - 0
static/src/xml/account_bank_voucher_import.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<templates xml:space="preserve">
+    <t t-name="account_bank_voucher_import.VoucherImport">
+        <button class="import_voucher oe_stat_button btn btn-default oe_inline">
+              <div class="stat_button_icon fa fa-exchange"></div>
+              <div>Pagos</div>
+            </button>
+  </t>
+</templates>

+ 10 - 0
views/template.xml

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

+ 15 - 0
views/voucher_import.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+	<data>
+        <record id="views_account_bank_payslip_import" model="ir.ui.view">
+            <field name="name">account.bank.statement.import.payslip</field>
+            <field name="model">account.bank.statement</field>
+            <field name="inherit_id" ref="account.view_bank_statement_form2"/>
+            <field name="arch" type="xml">
+                <label for="name" position="before">
+                    <div class="oe_right oe_button_box voucher_import" attrs="{'invisible': [('state','!=','open')]} "  groups="base.group_hr_manager"></div>
+                </label>
+            </field>
+        </record>
+	</data>
+</openerp>