123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- openerp.eiru_payment_term_generator = function (instance, local) {
- local.widgetInstance = null;
- local.parentInstance = null;
- local.AccountPaymentTermWidget = instance.Widget.extend({
- template : "eiru_payment_term_generator.AccountPaymentTerm",
- init:function(parent){
- this._super(parent);
- this.buttons = parent.$buttons;
- },
- updateId : function(id){
- var self = this;
- self.id=id;
- },
- reloadLine: function() {
- local.parentInstance.reload();
- },
- start: function () {
- var self = this;
- this.$el.click(function () {
- self.fecthInitial();
- });
- },
- fecthInitial: function(){
- var id= openerp.webclient._current_state.id;
- var self = this;
- self.fecthAccountPaymentTerm(id).then(function(PaymentTerm){
- return PaymentTerm;
- }).then(function(PaymentTerm){
- self.PaymentTerm = PaymentTerm;
- return self.fetchAccountPaymentTermLine();
- }).then(function(PaymentTermLine){
- self.PaymentTermLine = PaymentTermLine;
- self.fectchCalculatePaymentTerm();
- });
- return false;
- },
- fecthAccountPaymentTerm: function(id){
- var self = this;
- var defer = $.Deferred();
- var domain=[['id','=', id]];
- var fields=['id','name','invoice_amount','amount','frequency','active'];
- var PaymentTerm = new instance.web.Model('account.payment.term');
- PaymentTerm.query(fields).filter(domain).order_by('id').all().then(function(results){
- defer.resolve(results);
- });
- return defer;
- },
-
- fetchAccountPaymentTermLine: function () {
- var self = this;
- var defer = $.Deferred();
- var id = _.flatten(_.map(self.PaymentTerm,function(map){
- return map.id;
- }));
- var fields=['id','payment_id','value','days','days2','weeks','months','value_amount','amount_round'];
- var domain=[['payment_id','in', id]];
- var PaymentTermLine = new instance.web.Model('account.payment.term.line');
- PaymentTermLine.query(fields).filter(domain).order_by('id').all().then(function(results){
- defer.resolve(results);
- });
- return defer;
- },
- fectchCalculatePaymentTerm: function () {
- var self = this;
- var defer = $.Deferred();
- var data = [];
- var type = 'fixed';
- var PaymentTerm = self.PaymentTerm;
- var months_count = 0;
- var weeks_count = 0;
- var days_count = 0;
- var paid = 0;
- var value_amount = 0;
- var qty = PaymentTerm[0].invoice_amount / PaymentTerm[0].amount;
- if (qty % 1 == 0) {
- qty-=1
- }else{
- qty = Math.trunc(qty)
- }
- for (var i = 0; i <= qty; i++) {
- value_amount = PaymentTerm[0].amount;
- if(i == qty){
- type = 'balance';
- value_amount = PaymentTerm[0].invoice_amount - paid;
- }
- paid += PaymentTerm[0].amount;
- data.push({
- payment_id : PaymentTerm[0].id,
- value : type,
- value_amount : value_amount,
- days : days_count,
- days2 : 0,
- weeks : weeks_count,
- months : months_count
- });
- if(PaymentTerm[0].frequency == 'week'){
- weeks_count += 1;
- }else{
- if(PaymentTerm[0].frequency == 'month'){
- months_count += 1;
- }else{
- days_count += 15;
- }
-
- }
- }
- self.joinPaymentTermLine(data).then(function(results) {
- return results;
- }).then(function(){
- self.reloadLine();
- });
- },
- joinPaymentTermLine: function(data) {
- var self = this;
- var defer = $.Deferred();
- var AccountPaymentTerm = new openerp.web.Model('account.payment.term');
- AccountPaymentTerm.call('join_payment_term_lines',[data], {
- context: new openerp.web.CompoundContext()
- }).then(function(results) {
- defer.resolve(results);
- });
- return defer;
- },
- });
- if (instance.web && instance.web.FormView) {
- instance.web.FormView.include({
- load_form: function (record) {
- this._super.apply(this, arguments);
- if (this.model !== 'account.payment.term') return;
- local.parentInstance = this;
- if (local.widgetInstance) {
- local.widgetInstance.updateId(record.id);
- }
- local.widgetInstance = new local.AccountPaymentTermWidget(this);
- var elemento = this.$el.find('.oe_form_nosheet');
- elemento = elemento.find('.calculate_term_box');
- local.widgetInstance.appendTo(elemento);
- local.widgetInstance.updateId(record.id);
- }
- });
- }
- }
|