|
@@ -28,188 +28,96 @@ openerp.eiru_payment_term_generator = function (instance, local) {
|
|
|
fecthInitial: function(){
|
|
|
var id= openerp.webclient._current_state.id;
|
|
|
var self = this;
|
|
|
- self.fecthSale(id).then(function(sale){
|
|
|
- return sale;
|
|
|
- }).then(function(sale){
|
|
|
- self.sale = sale;
|
|
|
- return self.fetchProductTemplate();
|
|
|
- }).then(function(ProductTemplate){
|
|
|
- self.ProductTemplate = ProductTemplate;
|
|
|
- return self.fetchProductProduct();
|
|
|
- }).then(function(ProductProduct){
|
|
|
- self.ProductProduct = ProductProduct;
|
|
|
- self.inicializarBuscador();
|
|
|
+ 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;
|
|
|
},
|
|
|
|
|
|
- fecthSale: function(id){
|
|
|
+ fecthAccountPaymentTerm: function(id){
|
|
|
+ var self = this;
|
|
|
var defer = $.Deferred();
|
|
|
- var fields=['id','name','partner_id','state'];
|
|
|
var domain=[['id','=', id]];
|
|
|
- var Sale = new instance.web.Model('sale.order');
|
|
|
- Sale.query(fields).filter(domain).order_by('id').all().then(function(results){
|
|
|
+ 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;
|
|
|
},
|
|
|
|
|
|
- fetchProductTemplate: function () {
|
|
|
- var defer = $.Deferred();
|
|
|
- var fields=['id','name','curva'];
|
|
|
- var domain=[['active','=', true],['product_website_sale_type','=', true],['sale_ok','=', true]];
|
|
|
- var ProductTemplate = new instance.web.Model('product.template');
|
|
|
- ProductTemplate.query(fields).filter(domain).order_by('id').all().then(function(results){
|
|
|
- defer.resolve(results);
|
|
|
- });
|
|
|
- return defer;
|
|
|
- },
|
|
|
-
|
|
|
- fetchProductProduct: function () {
|
|
|
+ fetchAccountPaymentTermLine: function () {
|
|
|
+ var self = this;
|
|
|
var defer = $.Deferred();
|
|
|
- var fields=['id','name','product_tmpl_id','attribute_str','default_code','ean13'];
|
|
|
- var domain=[['active','=', true],['sale_ok','=', true]];
|
|
|
- var ProductProduct = new instance.web.Model('product.product');
|
|
|
- ProductProduct.query(fields).filter(domain).order_by('id').all().then(function(results){
|
|
|
+ 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;
|
|
|
},
|
|
|
|
|
|
- valorNull:function(dato){
|
|
|
- var valor ="";
|
|
|
- if (dato){
|
|
|
- valor=dato;
|
|
|
- }
|
|
|
- return valor;
|
|
|
- },
|
|
|
-
|
|
|
- getTemplate : function(id){
|
|
|
+ fectchCalculatePaymentTerm: function () {
|
|
|
var self = this;
|
|
|
- return _.filter(self.ProductTemplate, function(item){
|
|
|
- return item.id == id;
|
|
|
- });
|
|
|
- },
|
|
|
-
|
|
|
- getProduct : function(product_tmpl_id){
|
|
|
- var self = this;
|
|
|
- return _.filter(self.ProductProduct, function(item){
|
|
|
- return item.product_tmpl_id[0] == product_tmpl_id;
|
|
|
- });
|
|
|
- },
|
|
|
-
|
|
|
- getProductProduct : function(id){
|
|
|
- var self = this;
|
|
|
- return _.filter(self.ProductProduct, function(item){
|
|
|
- return item.id == id;
|
|
|
- });
|
|
|
- },
|
|
|
-
|
|
|
- inicializarBuscador: function () {
|
|
|
- var self = this;
|
|
|
- var selectProduct;
|
|
|
- var searchType = $('#SearchByCurve').is(":checked");
|
|
|
- if(searchType){
|
|
|
- var results = self.ProductTemplate;
|
|
|
- results = _.map(results, function (item) {
|
|
|
- return {
|
|
|
- label: item.name,
|
|
|
- value: item.id + '-'+ item.name
|
|
|
- }
|
|
|
- });
|
|
|
- self.$('#productSearch').autocomplete({
|
|
|
- source: results,
|
|
|
- minLength:3,
|
|
|
- response: function (e, ui){
|
|
|
- if (ui.content instanceof Array && ui.content.length === 1) {
|
|
|
- selectProduct = ui.content[0];
|
|
|
- $(this).autocomplete("close");
|
|
|
- $(this).val('');
|
|
|
- self.factInsert(selectProduct);
|
|
|
- }
|
|
|
- },
|
|
|
- select: function (e, ui) {
|
|
|
- $(this).val('');
|
|
|
- selectProduct = ui.item;
|
|
|
- self.factInsert(selectProduct);
|
|
|
- return false;
|
|
|
- }
|
|
|
- });
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var data = [];
|
|
|
+ var type = 'fixed';
|
|
|
+ var PaymentTerm = self.PaymentTerm;
|
|
|
+ var months_count = 0;
|
|
|
+ var weeks_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{
|
|
|
- var results = self.ProductProduct;
|
|
|
- results = _.map(results, function (item) {
|
|
|
- return {
|
|
|
- label: '[ ' + self.valorNull(item.default_code) + ' - ' + self.valorNull(item.ean13) + ' ] ' + item.name + ' (' + self.valorNull(item.attribute_str) + ')',
|
|
|
- value: item.id + ' - '+ item.name + ' (' + item.attribute_str + ')'
|
|
|
- }
|
|
|
- });
|
|
|
- $('#productSearch').autocomplete({
|
|
|
- source: results,
|
|
|
- minLength: 3,
|
|
|
- response: function (e, ui){
|
|
|
- if (ui.content instanceof Array && ui.content.length === 1) {
|
|
|
- selectProduct = ui.content[0];
|
|
|
- $(this).autocomplete("close");
|
|
|
- $(this).val('');
|
|
|
- self.factInsertProduct(selectProduct);
|
|
|
- return false;
|
|
|
- }
|
|
|
- },
|
|
|
- select: function (e, ui) {
|
|
|
- $(this).val('');
|
|
|
- selectProduct = ui.item;
|
|
|
- self.factInsertProduct(selectProduct);
|
|
|
- return false;
|
|
|
- }
|
|
|
- });
|
|
|
+ qty = Math.trunc(qty)
|
|
|
}
|
|
|
- },
|
|
|
-
|
|
|
- factInsert:function(selectProduct){
|
|
|
- var self = this;
|
|
|
- var product = selectProduct.value.split('-');
|
|
|
- var template = self.getTemplate(product[0]);
|
|
|
- var variant = self.getProduct(product[0]);
|
|
|
- template = template[0].curva.split(',');
|
|
|
- var qty = 0;
|
|
|
- var contador = 0;
|
|
|
- for (var i = 0; i < variant.length; i++) {
|
|
|
- qty = template[contador];
|
|
|
- contador += 1;
|
|
|
- self.joinSaleLine(variant[i].id, qty).then(function(results) {
|
|
|
- return results;
|
|
|
- }).then(function(){
|
|
|
- self.reloadLine();
|
|
|
+ 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 : 0,
|
|
|
+ days2 : 0,
|
|
|
+ weeks : weeks_count,
|
|
|
+ months : months_count
|
|
|
});
|
|
|
- if (contador === template.length) {
|
|
|
- contador = 0;
|
|
|
+
|
|
|
+ if(PaymentTerm[0].frequency == 'week'){
|
|
|
+ weeks_count += 1;
|
|
|
+ }else{
|
|
|
+ months_count += 1;
|
|
|
}
|
|
|
}
|
|
|
- },
|
|
|
-
|
|
|
- factInsertProduct:function(selectProduct){
|
|
|
- var self = this;
|
|
|
- var product = selectProduct.value.split('-');
|
|
|
- var variant = self.getProductProduct(product[0]);
|
|
|
- var qty = 1;
|
|
|
- self.joinSaleLine(variant[0].id, qty).then(function(results) {
|
|
|
+ self.joinPaymentTermLine(data).then(function(results) {
|
|
|
return results;
|
|
|
}).then(function(){
|
|
|
self.reloadLine();
|
|
|
});
|
|
|
},
|
|
|
|
|
|
- joinSaleLine: function(product_id, qty) {
|
|
|
+ joinPaymentTermLine: function(data) {
|
|
|
var self = this;
|
|
|
var defer = $.Deferred();
|
|
|
- var sale = new openerp.web.Model('account.payment.term');
|
|
|
- sale.call('join_sale_lines',[
|
|
|
- {
|
|
|
- id: self.sale[0].id,
|
|
|
- product_id: product_id,
|
|
|
- product_uom_qty: qty
|
|
|
- }
|
|
|
- ], {
|
|
|
+ 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);
|
|
@@ -229,9 +137,7 @@ openerp.eiru_payment_term_generator = function (instance, local) {
|
|
|
}
|
|
|
local.widgetInstance = new local.AccountPaymentTermWidget(this);
|
|
|
var elemento = this.$el.find('.oe_form_nosheet');
|
|
|
- console.log(elemento);
|
|
|
- elemento = elemento.find('.calculate_term_box');
|
|
|
- console.log(elemento);
|
|
|
+ elemento = elemento.find('.calculate_term_box');
|
|
|
local.widgetInstance.appendTo(elemento);
|
|
|
local.widgetInstance.updateId(record.id);
|
|
|
}
|