Browse Source

[FIX] correccion en el calculo de saldo de cuotas

Rodney Elpidio Enciso Arias 6 years ago
parent
commit
540091282b

+ 1 - 0
controllers/helpers/__init__.py

@@ -7,3 +7,4 @@ from res_company import get_res_company_logo
 from res_store import get_res_store
 from account_move_line import get_account_move_line
 from account_voucher import get_account_voucher
+from account_move_line_partial_reconcile import get_account_move_line_partial_reconcile

+ 1 - 1
controllers/helpers/account_invoice.py

@@ -31,7 +31,7 @@ def get_account_invoice():
         ON customer.id = invoice.partner_id
         WHERE invoice.state NOT IN ('draft', 'cancel')
         AND invoice.type = 'out_invoice'
-        --AND invoice.id=425
+        --AND invoice.number='A0632'
         GROUP BY
         	invoice.id,
         	rate.currency_id,

+ 25 - 0
controllers/helpers/account_move_line_partial_reconcile.py

@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+from openerp.http import request as r
+
+def get_account_move_line_partial_reconcile():
+    query = '''
+        SELECT
+        	journal.id,
+        	line.reconcile_partial_id,
+            line.credit
+        FROM account_journal AS journal
+        LEFT JOIN account_move_line AS line
+        ON line.journal_id = journal.id
+        WHERE journal.type in ('bank','cash')
+        AND line.reconcile_partial_id IS NOT NULL
+    '''
+
+    r.cr.execute(query)
+
+    return [
+        {
+            'journal_id': j[0],
+            'reconcile_partial_id': j[1],
+            'amount': j[2],
+        } for j in r.cr.fetchall()
+    ]

+ 1 - 0
controllers/main.py

@@ -39,4 +39,5 @@ class ReportCrifinController(http.Controller):
             'stores': hp.get_res_store(),
             'move_lines': hp.get_account_move_line(),
             'vouchers': hp.get_account_voucher(),
+            'reconcile_partials': hp.get_account_move_line_partial_reconcile(),
         })

+ 33 - 36
static/src/js/reports/report_amortization_and_interest.js

@@ -91,6 +91,7 @@ function report_amortization_and_interest(reporting){
                 self.AccountInvoiceLine = DataSQL.invoice_lines;
                 self.AccountMoveLine = DataSQL.move_lines;
                 self.AccountVoucher = DataSQL.vouchers;
+                self.AccountMoveLinePartialReconcile = DataSQL.reconcile_partials;
             });
             self.$el.find('#generate').css('display','inline');
             return;
@@ -135,6 +136,13 @@ function report_amortization_and_interest(reporting){
             return content;
         },
 
+        getAccountMoveLinePartialReconcile: function (id) {
+            var self = this;
+            return _.filter(self.AccountMoveLinePartialReconcile,function (item) {
+                return item.reconcile_partial_id == id;
+            });
+        },
+
         getAccountVoucher: function (number) {
             var self = this;
             var valor = _.reduce(_.map(self.AccountVoucher, function (map) {
@@ -240,7 +248,6 @@ function report_amortization_and_interest(reporting){
 
         BuildTable: function(){
             var self = this;
-            console.log(self);
             var columns = [];
             var data = [];
             var AccountInvoice = self.getContent();
@@ -300,6 +307,7 @@ function report_amortization_and_interest(reporting){
                         amount_value:item.amount,
                         residual_value:item.amount - pagado,
                     });
+                    item.residual = item.amount - pagado;
                 }
             });
             data.sort(function (a, b) {
@@ -330,20 +338,22 @@ function report_amortization_and_interest(reporting){
 
             columns.push({
                 field:'description',
-                title:'Descripcion',
+                title:'Descripción',
                 align:'center',
+                with:'8%',
                 footerFormatter:'Totales'
             });
 
             columns.push({
                 field:'date_maturity',
                 title:'Vencimiento',
+                with:'8%',
                 align:'center',
             });
 
             columns.push({
                 field:'capital_residual',
-                title:'Saldo del Prestamo',
+                title:'Amortización',
                 align:'right',
                 with:'12%',
                 footerFormatter:'0'
@@ -359,7 +369,7 @@ function report_amortization_and_interest(reporting){
 
             columns.push({
                 field:'capital_amount',
-                title:'Amortizacion',
+                title:'Capital',
                 align:'right',
                 with:'12%',
                 footerFormatter:'CapitalAmountFormatter'
@@ -391,7 +401,7 @@ function report_amortization_and_interest(reporting){
 
             columns.push({
                 field:'capital_receive',
-                title:'Capital Recuperado',
+                title:'Capital Cobrado',
                 align:'right',
                 with:'12%',
                 footerFormatter:'CapitalReceiveFormatter'
@@ -424,42 +434,36 @@ function report_amortization_and_interest(reporting){
             }), function (memo, num) {
                 return memo + num;
             });
-
-            var interest_amount = interes / cant_cuota;
-            var capital_amount = amortizacion / cant_cuota;
+            var interest_amount = 0;
+            var capital_amount = 0;
             var capital_receive = 0;
             var interest_receive = 0;
             var razon_capital = (capital - interes) / capital;
             var razon_interes = interes / capital;
+            var band = true;
+            var residual = 0;
             _.each(AccountMoveLine,function(item) {
                 if(item.number == number){
                     capital_receive = 0;
                     interest_receive = 0;
                     if(item.debit > 0 && item.date_maturity != false){
                         if(item.reconcile_partial_id == null){
-                            var residual = item.debit;
+                            residual = item.debit;
                         }else{
-                            var pagado = self.getAccountVoucher(item.number);
-                            var x = 0;
-                            var band = true;
-                            _.each(AccountMoveLine,function(i) {
-                                x += i.debit;
-                                var saldo = Math.abs(pagado - x);
-                                if(AccountMoveLine.length == 1){
-                                    residual = saldo;
-                                    band = false;
-                                }
-                                if(saldo < i.debit && band == true){
-                                    residual = i.debit - saldo;
-                                    if((razon_interes * item.debit) >= saldo){
-                                        interest_receive = saldo;
-                                    }else{
-                                        interest_receive = razon_interes * item.debit;
-                                        capital_receive = saldo - (razon_interes * item.debit);
-                                    }
-                                    band = false;
-                                }
+                            var reconcile = self.getAccountMoveLinePartialReconcile(item.reconcile_partial_id);
+                            reconcile = _.reduce(_.map(reconcile, function (map) {
+                                return map.amount;
+                            }), function (memo, num) {
+                                return memo + num;
                             });
+
+                            residual = item.debit - reconcile;
+                            if((razon_interes * item.debit) >= reconcile){
+                                interest_receive = reconcile;
+                            }else{
+                                interest_receive = razon_interes * item.debit;
+                                capital_receive = reconcile - (razon_interes * item.debit);
+                            }
                         }
                         if(item.reconcile_id != null){
                             residual = 0;
@@ -655,12 +659,5 @@ function report_amortization_and_interest(reporting){
                 }
            return filter;
         },
-
-
-
-
-
-
-
     });
 }