|
@@ -1,513 +1,766 @@
|
|
|
-function report_crm(reporting){
|
|
|
- "use strict";
|
|
|
-
|
|
|
- var model = openerp;
|
|
|
-
|
|
|
- reporting.ReportCrmWidget = reporting.Base.extend({
|
|
|
- template:'ReportCrm',
|
|
|
- AccountVoucher: [],
|
|
|
- content:[],
|
|
|
- rowsData :[],
|
|
|
- modules: ['crm'],
|
|
|
- events:{
|
|
|
- 'click #toolbar > button' : 'clickOnAction',
|
|
|
- 'click #generate' : 'fetchGenerate',
|
|
|
- 'click-row.bs.table #table ' : 'clickAnalysisDetail',
|
|
|
+function report_crm(reporting) {
|
|
|
+ "use strict";
|
|
|
+
|
|
|
+ var model = openerp;
|
|
|
+
|
|
|
+ reporting.ReportCrmWidget = reporting.Base.extend({
|
|
|
+ template: 'ReportCrm',
|
|
|
+ AccountVoucher: [],
|
|
|
+ content: [],
|
|
|
+ rowsData: [],
|
|
|
+ modules: ['crm'],
|
|
|
+ events: {
|
|
|
+ 'click #toolbar > button': 'clickOnAction',
|
|
|
+ 'click #generate': 'fetchGenerate',
|
|
|
+ 'click-row.bs.table #table ': 'clickAnalysisDetail',
|
|
|
+ 'change #current-date': 'ShowDateRange',
|
|
|
+ 'change #current-store': 'updateUser',
|
|
|
+ },
|
|
|
+ init: function(parent) {
|
|
|
+ this._super(parent);
|
|
|
+ },
|
|
|
+ start: function() {
|
|
|
+ var table = this.$el.find('#table');
|
|
|
+ table.bootstrapTable({
|
|
|
+ data: self.rowsData
|
|
|
+ });
|
|
|
+ var date = new model.eiru_reports.ReportDatePickerWidget(self);
|
|
|
+ date.fecthFecha();
|
|
|
+ this.fetchInitial();
|
|
|
+ },
|
|
|
+
|
|
|
+ // Redirecionar
|
|
|
+ renderReport: function() {
|
|
|
+ var self = this;
|
|
|
+
|
|
|
+ var container = this.$el.closest('.oe_form_sheet.oe_form_sheet_width');
|
|
|
+ this.$el.closest('.report_view').remove();
|
|
|
+ container.find('.report_view').show({
|
|
|
+ effect: 'fade',
|
|
|
+ duration: 200,
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // Verificar el modelo
|
|
|
+ checkModel: function(model) {
|
|
|
+ var self = this;
|
|
|
+ return _.filter(self.modules, function(item) {
|
|
|
+ return item.name === model
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // Lanzar el mensaje
|
|
|
+ showMensaje: function(modelos) {
|
|
|
+ var self = this;
|
|
|
+ $("#dialog").dialog({
|
|
|
+ autoOpen: true,
|
|
|
+ resizable: false,
|
|
|
+ modal: true,
|
|
|
+ title: 'Atención',
|
|
|
+ width: 500,
|
|
|
+ open: function() {
|
|
|
+ $(this).html('Reporte in-disponible, contacte con el administrador del sistema ref : ' + modelos);
|
|
|
},
|
|
|
- init : function(parent){
|
|
|
- this._super(parent);
|
|
|
+ show: {
|
|
|
+ effect: "fade",
|
|
|
+ duration: 200
|
|
|
},
|
|
|
- start: function () {
|
|
|
- var self = this;
|
|
|
- var table = this.$el.find('#table');
|
|
|
- table.bootstrapTable({data : self.rowsData});
|
|
|
- this.fecthFecha();
|
|
|
- this.fetchInitial();
|
|
|
+ hide: {
|
|
|
+ effect: "fade",
|
|
|
+ duration: 200
|
|
|
},
|
|
|
-
|
|
|
- // Redirecionar
|
|
|
- renderReport: function () {
|
|
|
- var self = this;
|
|
|
-
|
|
|
- var container = this.$el.closest('.oe_form_sheet.oe_form_sheet_width');
|
|
|
- this.$el.closest('.report_view').remove();
|
|
|
- container.find('.report_view').show({
|
|
|
- effect: 'fade',
|
|
|
- duration: 200,
|
|
|
- });
|
|
|
- },
|
|
|
- // Verificar el modelo
|
|
|
- checkModel : function(model){
|
|
|
- var self = this;
|
|
|
- return _.filter(self.modules,function(item){return item.name === model});
|
|
|
- },
|
|
|
- // Lanzar el mensaje
|
|
|
- showMensaje : function(modelos){
|
|
|
- var self = this;
|
|
|
- $("#dialog" ).dialog({
|
|
|
- autoOpen: true,
|
|
|
- resizable: false,
|
|
|
- modal: true,
|
|
|
- title: 'Atención',
|
|
|
- width: 500,
|
|
|
- open: function() {
|
|
|
- $(this).html('Reporte in-disponible, contacte con el administrador del sistema ref : '+modelos);
|
|
|
- },
|
|
|
- show: {
|
|
|
- effect: "fade",
|
|
|
- duration: 200
|
|
|
- },
|
|
|
- hide: {
|
|
|
- effect: "fade",
|
|
|
- duration: 200
|
|
|
- },
|
|
|
- buttons: {
|
|
|
- Aceptar: function() {
|
|
|
- $(this).dialog('close');
|
|
|
- self.renderReport()
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- return
|
|
|
- },
|
|
|
-
|
|
|
- valorNull:function(dato){
|
|
|
- var valor ="";
|
|
|
- if (dato){
|
|
|
- valor=dato;
|
|
|
- }
|
|
|
- return valor;
|
|
|
- },
|
|
|
-
|
|
|
- clickAnalysisDetail: function(e, row, $element, field){
|
|
|
- if (field == 'description'){
|
|
|
- this.do_action({
|
|
|
- name:"CRM",
|
|
|
- type: 'ir.actions.act_window',
|
|
|
- res_model: "crm.lead",
|
|
|
- views: [[false,'form']],
|
|
|
- target: 'new',
|
|
|
- domain: [['id','=', row.id]],
|
|
|
- context: {},
|
|
|
- flags: {'form': {'action_buttons': false, 'options': {'mode': 'view'}}},
|
|
|
- res_id: row.id,
|
|
|
- });
|
|
|
- }
|
|
|
- if (field === 'partner'){
|
|
|
- this.do_action({
|
|
|
- name:"Registro",
|
|
|
- type: 'ir.actions.act_window',
|
|
|
- res_model: "res.partner",
|
|
|
- views: [[false,'form']],
|
|
|
- target: 'new',
|
|
|
- domain: [['id','=', row.partner_id]],
|
|
|
- context: {},
|
|
|
- flags: {'form': {'action_buttons': false, 'options': {'mode': 'view'}}},
|
|
|
- res_id: row.partner_id,
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- e.stopImmediatePropagation();
|
|
|
- },
|
|
|
-
|
|
|
- fetchInitial: function () {
|
|
|
- var self = this;
|
|
|
- self.fecthIrModuleModule().then(function (IrModuleModule) {
|
|
|
- return IrModuleModule;
|
|
|
- }).then(function(IrModuleModule) {
|
|
|
- self.IrModuleModule = IrModuleModule;
|
|
|
- return self.fetchResUser();
|
|
|
- }).then(function (ResUser) {
|
|
|
- self.ResUser = ResUser;
|
|
|
- if(ResUser.length > 1){
|
|
|
- self.$el.find('#current-user').append('<option value="9999999">Todos los usuarios</option>');
|
|
|
- _.each(ResUser,function(item){
|
|
|
- self.$el.find('#current-user').append('<option value="' + item.id + '">' + item.name + '</option>');
|
|
|
- });
|
|
|
- }else{
|
|
|
- self.$el.find('.user').css('display','none');
|
|
|
- }
|
|
|
- self.fecthCheckType();
|
|
|
- return self.fetchResCompany();
|
|
|
- }).then(function(ResCompany){
|
|
|
- self.ResCompany = ResCompany;
|
|
|
- if(ResCompany.length > 1){
|
|
|
- self.$el.find('#current-company').append('<option value="9999999">Todas las empresas</option>');
|
|
|
- _.each(ResCompany,function(item){
|
|
|
- self.$el.find('#current-company').append('<option value="' + item.id + '">' + item.name + '</option>');
|
|
|
- });
|
|
|
- }else{
|
|
|
- self.$el.find('.company').css('display','none');
|
|
|
- }
|
|
|
- return self.fetchResPartner();
|
|
|
- }).then(function(ResPartner){
|
|
|
- self.ResPartner = ResPartner;
|
|
|
- });
|
|
|
- self.$el.find('#generate').css('display','inline');
|
|
|
- return;
|
|
|
- },
|
|
|
-
|
|
|
- fetchGenerate: function () {
|
|
|
- var self = this;
|
|
|
- self.$el.find('.search-form').block({
|
|
|
- message: null,
|
|
|
- overlayCSS: {
|
|
|
- backgroundColor: '#FAFAFA'
|
|
|
- }
|
|
|
- });
|
|
|
- self.$el.find('.report-form').block({
|
|
|
- message: null,
|
|
|
- overlayCSS: {
|
|
|
- backgroundColor: '#FAFAFA'
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- this.fetchCrm().then(function(ResCrm) {
|
|
|
- return ResCrm;
|
|
|
- }).then(function (ResCrm) {
|
|
|
- self.ResCrm = ResCrm;
|
|
|
- return self.fetchCrmStage();
|
|
|
- }).then(function(CrmStage){
|
|
|
- self.CrmStage = CrmStage;
|
|
|
- if(CrmStage.length > 1){
|
|
|
- self.$el.find('#current-state').append('<option value="9999999">Todas las etapas</option>');
|
|
|
- _.each(CrmStage,function(item){
|
|
|
- self.$el.find('#current-state').append('<option value="' + item.id + '">' + item.name + '</option>');
|
|
|
- });
|
|
|
- }else{
|
|
|
- self.$el.find('.state').css('display','none');
|
|
|
- }
|
|
|
- return self.BuildTable();
|
|
|
- });
|
|
|
- },
|
|
|
-
|
|
|
- fecthFecha: function() {
|
|
|
- var to;
|
|
|
- var dateFormat1 = "mm/dd/yy",
|
|
|
- from = $( "#from" )
|
|
|
- .datepicker({
|
|
|
- dateFormat: "dd/mm/yy",
|
|
|
- changeMonth: true,
|
|
|
- numberOfMonths: 1,
|
|
|
- })
|
|
|
- .on( "change", function() {
|
|
|
- to.datepicker( "option", "minDate", getDate(this), "dd/mm/yyyy");
|
|
|
- });
|
|
|
- to = $( "#to" ).datepicker({
|
|
|
- dateFormat: "dd/mm/yy",
|
|
|
- defaultDate: "+7d",
|
|
|
- changeMonth: true,
|
|
|
- numberOfMonths: 1,
|
|
|
- })
|
|
|
- .on( "change", function() {
|
|
|
- from.datepicker( "option", "maxDate", getDate(this));
|
|
|
- });
|
|
|
- function getDate( element ) {
|
|
|
- var fechaSel =element.value.split('/');
|
|
|
- var date;
|
|
|
- try {
|
|
|
- date = $.datepicker.parseDate( dateFormat1, (fechaSel[1]+"/"+fechaSel[0]+"/"+fechaSel[2]));
|
|
|
- } catch( error ) {
|
|
|
- date = null;
|
|
|
- }
|
|
|
- return date;
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- fecthIrModuleModule: function(){
|
|
|
- var self = this;
|
|
|
- var defer = $.Deferred();
|
|
|
- var fields = ['name','id'];
|
|
|
- var domain=[['state','=','installed'],['name','in',self.modules]];
|
|
|
- var IrModuleModule = new model.web.Model('ir.module.module');
|
|
|
- IrModuleModule.query(fields).filter(domain).all().then(function(results){
|
|
|
- defer.resolve(results);
|
|
|
- })
|
|
|
- return defer;
|
|
|
- },
|
|
|
-
|
|
|
- /*=====================================================================
|
|
|
- Check type
|
|
|
- =====================================================================*/
|
|
|
- fecthCheckType: function(){
|
|
|
- var self = this;
|
|
|
- var modules = self.checkModel('crm');
|
|
|
- if(modules.length == 0){
|
|
|
- self.$el.find('.type').css('display','none');
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- /*=====================================================================
|
|
|
- USER
|
|
|
- =====================================================================*/
|
|
|
- fetchResUser: function() {
|
|
|
- var self = this;
|
|
|
- var defer = $.Deferred();
|
|
|
- var fields = ['id','name','store_id'];
|
|
|
- var ResUser = new model.web.Model('res.users');
|
|
|
- ResUser.query(fields).filter().all().then(function (results) {
|
|
|
- defer.resolve(results);
|
|
|
- });
|
|
|
- return defer;
|
|
|
- },
|
|
|
-
|
|
|
- /*====================================================================
|
|
|
- RES COMPANY
|
|
|
- ====================================================================*/
|
|
|
- fetchResCompany: function(){
|
|
|
- var self = this;
|
|
|
- var defer = $.Deferred();
|
|
|
- var currency = new model.web.Model('res.company');
|
|
|
- var field=['id','name','currency_id','logo'];
|
|
|
- currency.query(field).filter().all().then(function(results){
|
|
|
- defer.resolve(results);
|
|
|
- });
|
|
|
- return defer;
|
|
|
- },
|
|
|
-
|
|
|
-
|
|
|
- /*====================================================================
|
|
|
- CRM
|
|
|
- ====================================================================*/
|
|
|
- fetchCrm: function() {
|
|
|
- var self = this;
|
|
|
- var defer = $.Deferred();
|
|
|
- var stage_ids = _.flatten(_.map(self.CrmStage, function (item) {
|
|
|
- return item.id;
|
|
|
- }));
|
|
|
- var state = self.$el.find('#current-state').val();
|
|
|
- var company = self.$el.find('#current-company').val();
|
|
|
- var user = self.$el.find('#current-user').val();
|
|
|
- var desde = self.$el.find('#from').val();
|
|
|
- var hasta = self.$el.find('#to').val();
|
|
|
- var domain = [['type','=','opportunity'],['active', '=', true]];
|
|
|
- if(state && state != 9999999){
|
|
|
- domain.push(['stage_id','=',parseInt(state)]);
|
|
|
- }
|
|
|
- if(company && company != 9999999){
|
|
|
- domain.push(['company_id','=',parseInt(company)]);
|
|
|
- }
|
|
|
- if(user && user != 9999999){
|
|
|
- domain.push(['user_id','=',parseInt(user)]);
|
|
|
+ buttons: {
|
|
|
+ Aceptar: function() {
|
|
|
+ $(this).dialog('close');
|
|
|
+ self.renderReport()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return
|
|
|
+ },
|
|
|
+
|
|
|
+ valorNull: function(dato) {
|
|
|
+ var valor = "";
|
|
|
+ if (dato) {
|
|
|
+ valor = dato;
|
|
|
+ }
|
|
|
+ return valor;
|
|
|
+ },
|
|
|
+
|
|
|
+ ShowDateRange: function() {
|
|
|
+ var self = this;
|
|
|
+ var date = self.$el.find('#current-date').val();
|
|
|
+ if (date == 'range') {
|
|
|
+ self.$el.find('.datepicker').css('display', 'block');
|
|
|
+ }
|
|
|
+ if (date != 'range') {
|
|
|
+ self.$el.find('.datepicker').css('display', 'none');
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ clickAnalysisDetail: function(e, row, $element, field) {
|
|
|
+ if (field == 'description') {
|
|
|
+ this.do_action({
|
|
|
+ name: "CRM",
|
|
|
+ type: 'ir.actions.act_window',
|
|
|
+ res_model: "crm.lead",
|
|
|
+ views: [
|
|
|
+ [false, 'form']
|
|
|
+ ],
|
|
|
+ target: 'new',
|
|
|
+ domain: [
|
|
|
+ ['id', '=', row.id]
|
|
|
+ ],
|
|
|
+ context: {},
|
|
|
+ flags: {
|
|
|
+ 'form': {
|
|
|
+ 'action_buttons': false,
|
|
|
+ 'options': {
|
|
|
+ 'mode': 'view'
|
|
|
+ }
|
|
|
}
|
|
|
- if(desde){
|
|
|
- var date = desde.split('/')
|
|
|
- date = (date[2]+"-"+date[1]+"-"+date[0])
|
|
|
- domain.push(['create_date','>',date]);
|
|
|
- }
|
|
|
- if(hasta){
|
|
|
- var date = hasta.split('/')
|
|
|
- date = (date[2]+"-"+date[1]+"-"+date[0])
|
|
|
- domain.push(['create_date','<',date]);
|
|
|
- }
|
|
|
- var fields = [
|
|
|
- 'id',
|
|
|
- 'company_id',
|
|
|
- 'partner_id',
|
|
|
- 'name',
|
|
|
- 'description',
|
|
|
- 'create_date',
|
|
|
- 'user_id',
|
|
|
- 'stage_id',
|
|
|
- 'date_last_stage_update',
|
|
|
- 'write_date',
|
|
|
- 'type',
|
|
|
- ];
|
|
|
- var ResCrm = new model.web.Model('crm.lead');
|
|
|
- ResCrm.query(fields).filter(domain).all().then(function (results) {
|
|
|
- defer.resolve(results);
|
|
|
- });
|
|
|
- return defer;
|
|
|
- },
|
|
|
-
|
|
|
- fetchCrmStage: function () {
|
|
|
- var self = this;
|
|
|
- var defer = $.Deferred();
|
|
|
-
|
|
|
- var filter = [['type', 'in',['both','opportunity']]];
|
|
|
- var CrmStage = new model.web.Model('crm.case.stage');
|
|
|
- CrmStage.query(['id', 'name', 'type']).filter(filter).all().then(function(results){
|
|
|
- defer.resolve(results);
|
|
|
- });
|
|
|
-
|
|
|
- return defer;
|
|
|
- },
|
|
|
-
|
|
|
- fetchResPartner: function () {
|
|
|
- var self = this;
|
|
|
- var defer = $.Deferred();
|
|
|
- var ResPartner = new model.web.Model('res.partner');
|
|
|
- ResPartner.query(['id','name','ruc']).filter([['active', '=', true]]).all().then(function(results){
|
|
|
- defer.resolve(results);
|
|
|
- });
|
|
|
- return defer;
|
|
|
- },
|
|
|
-
|
|
|
- search: function () {
|
|
|
- var self = this;
|
|
|
- var results = self.ResPartner;
|
|
|
- results = _.map(results, function (item) {
|
|
|
- return {
|
|
|
- label: item.id + '-'+ item.name + ' ' + self.valorNull(item.ruc),
|
|
|
- value: item.id + '-'+ item.name + ' ' + self.valorNull(item.ruc)
|
|
|
- }
|
|
|
- });
|
|
|
- self.$('#partner').autocomplete({
|
|
|
- source: results,
|
|
|
- minLength:0,
|
|
|
- search: function(event, ui) {
|
|
|
- if (!(self.$('#partner').val())){
|
|
|
- self.factSearch();
|
|
|
- }
|
|
|
- },
|
|
|
- close: function( event, ui ) {
|
|
|
- self.factSearch();
|
|
|
- },
|
|
|
- select: function(event, ui) {
|
|
|
- self.factSearch();
|
|
|
- }
|
|
|
- });
|
|
|
- },
|
|
|
-
|
|
|
- /*====================================================================
|
|
|
- BUILD
|
|
|
- ====================================================================*/
|
|
|
- BuildTable: function(){
|
|
|
- var self = this;
|
|
|
- var data = [];
|
|
|
- var company = $('#current-company').val();
|
|
|
- if(company && company != 9999999){
|
|
|
- var ResCompany = self.getResCompany(company).shift();
|
|
|
-
|
|
|
- }else{
|
|
|
- // var CurrencyBase = self.getResCurrency(self.ResCompany[0].currency_id[0]).shift();
|
|
|
+ },
|
|
|
+ res_id: row.id,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (field === 'partner') {
|
|
|
+ this.do_action({
|
|
|
+ name: "Cliente",
|
|
|
+ type: 'ir.actions.act_window',
|
|
|
+ res_model: "res.partner",
|
|
|
+ views: [
|
|
|
+ [false, 'form']
|
|
|
+ ],
|
|
|
+ target: 'new',
|
|
|
+ domain: [
|
|
|
+ ['id', '=', row.partner_id]
|
|
|
+ ],
|
|
|
+ context: {},
|
|
|
+ flags: {
|
|
|
+ 'form': {
|
|
|
+ 'action_buttons': false,
|
|
|
+ 'options': {
|
|
|
+ 'mode': 'view'
|
|
|
+ }
|
|
|
}
|
|
|
- var ResCrm = self.ResCrm;
|
|
|
- _.each(ResCrm, function(item){
|
|
|
- data.push({
|
|
|
- id: item.id,
|
|
|
- name : self.valorNull(item.name),
|
|
|
- description: self.valorNull(item.description),
|
|
|
- partner: item.partner_id[1],
|
|
|
- create_date: moment(item.create_date).format("DD/MM/YYYY"),
|
|
|
- date_last_stage_update: moment(item.date_last_stage_update).format("DD/MM/YYYY"),
|
|
|
- write_date: moment(item.write_date).format("DD/MM/YYYY"),
|
|
|
- date: moment(item.create_date).format("YYYY-MM-DD"),
|
|
|
- user: item.user_id[1],
|
|
|
- stage_id: item.stage_id[0],
|
|
|
- stage: item.stage_id[1],
|
|
|
- partner_id : item.partner_id[0],
|
|
|
- });
|
|
|
- });
|
|
|
- self.content = data;
|
|
|
- self.loadTable(data);
|
|
|
- self.$el.find('.report-form').css('display','block');
|
|
|
- self.$el.find('.search-form').unblock();
|
|
|
- self.$el.find('.report-form').unblock();
|
|
|
+ },
|
|
|
+ res_id: row.partner_id,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ e.stopImmediatePropagation();
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchInitial: function() {
|
|
|
+ var self = this;
|
|
|
+ self.fecthIrModuleModule().then(function(IrModuleModule) {
|
|
|
+ return IrModuleModule;
|
|
|
+ }).then(function(IrModuleModule) {
|
|
|
+ self.IrModuleModule = IrModuleModule;
|
|
|
+ return self.fetchResCompany();
|
|
|
+ }).then(function(ResCompany) {
|
|
|
+ self.ResCompany = ResCompany;
|
|
|
+ if (ResCompany.length > 1) {
|
|
|
+ self.$el.find('#current-company').append('<option value="9999999">Todas las empresas</option>');
|
|
|
+ _.each(ResCompany, function(item) {
|
|
|
+ self.$el.find('#current-company').append('<option value="' + item.id + '">' + item.name + '</option>');
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ self.$el.find('.company').css('display', 'none');
|
|
|
+ }
|
|
|
+ return self.fetchResStore();
|
|
|
+ }).then(function(ResStore) {
|
|
|
+ self.ResStore = ResStore;
|
|
|
+ if (ResStore.length > 1) {
|
|
|
+ self.$el.find('#current-store').append('<option value="9999999">Todas las sucursales</option>');
|
|
|
+ _.each(ResStore, function(item) {
|
|
|
+ self.$el.find('#current-store').append('<option value="' + item.id + '">' + item.name + '</option>');
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ self.$el.find('.store').css('display', 'none');
|
|
|
+ }
|
|
|
+ return self.fetchResUser();
|
|
|
+ }).then(function(ResUser) {
|
|
|
+ self.ResUser = ResUser;
|
|
|
+ if (ResUser.length > 1) {
|
|
|
+ self.$el.find('#current-user').append('<option value="9999999">Todos los usuarios</option>');
|
|
|
+ _.each(ResUser, function(item) {
|
|
|
+ self.$el.find('#current-user').append('<option value="' + item.id + '">' + item.name + '</option>');
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ self.$el.find('.user').css('display', 'none');
|
|
|
+ }
|
|
|
+ self.fecthCheckType();
|
|
|
+ return self.fetchResPartner();
|
|
|
+ }).then(function(ResPartner) {
|
|
|
+ self.ResPartner = ResPartner;
|
|
|
+ if (ResPartner.length > 1) {
|
|
|
+ self.$el.find('#current-partner').append('<option value="9999999">Todos los clientes</option>');
|
|
|
+ _.each(ResPartner, function(item) {
|
|
|
+ self.$el.find('#current-partner').append('<option value="' + item.id + '">' + item.name + '</option>');
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ self.$el.find('.partner').css('display', 'none');
|
|
|
+ }
|
|
|
+ return self.fetchCrmStage();
|
|
|
+ }).then(function(CrmStage) {
|
|
|
+ self.CrmStage = CrmStage;
|
|
|
+ if (CrmStage.length > 1) {
|
|
|
+ self.$el.find('#current-stage').append('<option value="9999999">Todas las etapas</option>');
|
|
|
+ _.each(CrmStage, function(item) {
|
|
|
+ self.$el.find('#current-stage').append('<option value="' + item.id + '">' + item.name + '</option>');
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ self.$el.find('.stage').css('display', 'none');
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+ self.$el.find('#generate').css('display', 'inline');
|
|
|
+ return;
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchGenerate: function() {
|
|
|
+ var self = this;
|
|
|
+ self.$el.find('.search-form').block({
|
|
|
+ message: null,
|
|
|
+ overlayCSS: {
|
|
|
+ backgroundColor: '#FAFAFA'
|
|
|
+ }
|
|
|
+ });
|
|
|
+ self.$el.find('.report-form').block({
|
|
|
+ message: null,
|
|
|
+ overlayCSS: {
|
|
|
+ backgroundColor: '#FAFAFA'
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ this.fetchCrm().then(function(ResCrm) {
|
|
|
+ return ResCrm;
|
|
|
+ }).then(function(ResCrm) {
|
|
|
+ self.ResCrm = ResCrm;
|
|
|
+ return self.BuildTable();
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ fecthIrModuleModule: function() {
|
|
|
+ var self = this;
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var fields = ['name', 'id'];
|
|
|
+ var domain = [
|
|
|
+ ['state', '=', 'installed'],
|
|
|
+ ['name', 'in', self.modules]
|
|
|
+ ];
|
|
|
+ var IrModuleModule = new model.web.Model('ir.module.module');
|
|
|
+ IrModuleModule.query(fields).filter(domain).all().then(function(results) {
|
|
|
+ defer.resolve(results);
|
|
|
+ })
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+
|
|
|
+ /*=====================================================================
|
|
|
+ Check type
|
|
|
+ =====================================================================*/
|
|
|
+ fecthCheckType: function() {
|
|
|
+ var self = this;
|
|
|
+ var modules = self.checkModel('crm');
|
|
|
+ if (modules.length == 0) {
|
|
|
+ self.$el.find('.type').css('display', 'none');
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ /*=====================================================================
|
|
|
+ USER
|
|
|
+ =====================================================================*/
|
|
|
+ fetchResUser: function() {
|
|
|
+ var self = this;
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var fields = ['id', 'name', 'store_id'];
|
|
|
+ var ResUser = new model.web.Model('res.users');
|
|
|
+ ResUser.query(fields).filter().all().then(function(results) {
|
|
|
+ defer.resolve(results);
|
|
|
+ });
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+
|
|
|
+ /*====================================================================
|
|
|
+ RES COMPANY
|
|
|
+ ====================================================================*/
|
|
|
+ fetchResCompany: function() {
|
|
|
+ var self = this;
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var currency = new model.web.Model('res.company');
|
|
|
+ var field = ['id', 'name', 'currency_id', 'logo'];
|
|
|
+ currency.query(field).filter().all().then(function(results) {
|
|
|
+ defer.resolve(results);
|
|
|
+ });
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+
|
|
|
+ /*====================================================================
|
|
|
+ RES STORE
|
|
|
+ ====================================================================*/
|
|
|
+ fetchResStore: function() {
|
|
|
+ var self = this;
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var field = ['id', 'name', 'company_id'];
|
|
|
+ var ResStore = new model.web.Model('res.store');
|
|
|
+ ResStore.query(field).all().then(function(results) {
|
|
|
+ defer.resolve(results);
|
|
|
+ });
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ /*====================================================================
|
|
|
+ CRM
|
|
|
+ ====================================================================*/
|
|
|
+ fetchCrm: function() {
|
|
|
+ var self = this;
|
|
|
+ var defer = $.Deferred();
|
|
|
+
|
|
|
+
|
|
|
+ var company = self.$el.find('#current-company').val();
|
|
|
+ var store = self.$el.find('#current-store').val();
|
|
|
+ var user = self.$el.find('#current-user').val();
|
|
|
+ var partner = self.$el.find('#current-partner').val();
|
|
|
+ var stage = self.$el.find('#current-stage').val();
|
|
|
+ var date = self.$el.find('#current-date').val()
|
|
|
+ var desde = self.$el.find('#from').val();
|
|
|
+ var hasta = self.$el.find('#to').val();
|
|
|
+
|
|
|
+ var domain = [
|
|
|
+ ['type', '=', 'opportunity'],
|
|
|
+ ['active', '=', true]
|
|
|
+ ];
|
|
|
+ if (company && company != 9999999) {
|
|
|
+
|
|
|
+ domain.push(['opportunity_id', '=', opportunity]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (store && store != 9999999) {
|
|
|
+ var user_ids = _.map(_.filter(self.ResUser, function(item) {
|
|
|
+ return item.store_id[0] == store;
|
|
|
+ }), function(map) {
|
|
|
+ return map.id;
|
|
|
+ });
|
|
|
+ domain.push(['user_id', 'in', user_ids]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (user && user != 9999999) {
|
|
|
+
|
|
|
+ domain.push(['user_id', '=', parseInt(user)]);
|
|
|
+ }
|
|
|
+ if (partner && partner != 9999999) {
|
|
|
+
|
|
|
+ domain.push(['partner_id', '=', parseInt(partner)]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (stage && stage != 9999999) {
|
|
|
+ domain.push(['stage_id', '=', parseInt(stage)]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (date && date != 9999999) {
|
|
|
+
|
|
|
+ if (desde) {
|
|
|
+ var date = desde.split('/')
|
|
|
+ date = (date[2] + "-" + date[1] + "-" + date[0]);
|
|
|
+ domain.push(['create_date', '>=', date]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (hasta) {
|
|
|
+ var date = hasta.split('/')
|
|
|
+ date = (date[2] + "-" + date[1] + "-" + date[0]);
|
|
|
+ domain.push(['create_date', '<=', date]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (date == 'today') {
|
|
|
+ var today = moment().format('YYYY-MM-DD');
|
|
|
+ domain.push(['create_date', '=', today]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (date == 'yesterday') {
|
|
|
+ var yesterday = moment().add(-1, 'days').format('YYYY-MM-DD');
|
|
|
+ domain.push(['create_date', '=', yesterday]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (date == 'currentMonth') {
|
|
|
+ var currentMonth = moment().format('YYYY-MM');
|
|
|
+ domain.push(['create_date', 'like', currentMonth]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (date == 'lastMonth') {
|
|
|
+ var lastMonth = moment().add(-1, 'months').format('YYYY-MM');
|
|
|
+ domain.push(['create_date', 'like', lastMonth]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ var fields = [
|
|
|
+ 'id',
|
|
|
+ 'company_id',
|
|
|
+ 'partner_id',
|
|
|
+ 'name',
|
|
|
+ 'description',
|
|
|
+ 'create_date',
|
|
|
+ 'user_id',
|
|
|
+ 'stage_id',
|
|
|
+ 'date_last_stage_update',
|
|
|
+ 'write_date',
|
|
|
+ 'type',
|
|
|
+ ];
|
|
|
+ var ResCrm = new model.web.Model('crm.lead');
|
|
|
+ ResCrm.query(fields).filter(domain).all().then(function(results) {
|
|
|
+ defer.resolve(results);
|
|
|
+ });
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchCrmStage: function() {
|
|
|
+ var self = this;
|
|
|
+ var defer = $.Deferred();
|
|
|
+
|
|
|
+ var filter = [
|
|
|
+ ['type', 'in', ['both', 'opportunity']]
|
|
|
+ ];
|
|
|
+ var CrmStage = new model.web.Model('crm.case.stage');
|
|
|
+ CrmStage.query(['id', 'name', 'type']).filter(filter).all().then(function(results) {
|
|
|
+ defer.resolve(results);
|
|
|
+ });
|
|
|
+
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchResPartner: function() {
|
|
|
+ var self = this;
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var ResPartner = new model.web.Model('res.partner');
|
|
|
+ ResPartner.query(['id', 'name', 'ruc']).filter([
|
|
|
+ ['active', '=', true]
|
|
|
+ ]).all().then(function(results) {
|
|
|
+ defer.resolve(results);
|
|
|
+ });
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+
|
|
|
+ search: function() {
|
|
|
+ var self = this;
|
|
|
+ var results = self.ResPartner;
|
|
|
+ results = _.map(results, function(item) {
|
|
|
+ return {
|
|
|
+ label: item.id + '-' + item.name + ' ' + self.valorNull(item.ruc),
|
|
|
+ value: item.id + '-' + item.name + ' ' + self.valorNull(item.ruc)
|
|
|
+ }
|
|
|
+ });
|
|
|
+ self.$('#partner').autocomplete({
|
|
|
+ source: results,
|
|
|
+ minLength: 0,
|
|
|
+ search: function(event, ui) {
|
|
|
+ if (!(self.$('#partner').val())) {
|
|
|
+ self.factSearch();
|
|
|
+ }
|
|
|
},
|
|
|
-
|
|
|
- loadTable:function(rowsTable){
|
|
|
- var self = this;
|
|
|
- self.rowsData = rowsTable;
|
|
|
- var table = this.$el.find('#table');
|
|
|
- table.bootstrapTable('load',rowsTable);
|
|
|
+ close: function(event, ui) {
|
|
|
+ self.factSearch();
|
|
|
},
|
|
|
-
|
|
|
- clickOnAction: function (e) {
|
|
|
- var self = this;
|
|
|
- var ResCompany;
|
|
|
- var action = this.$el.find(e.target).val();
|
|
|
- var company = $('#current-company').val();
|
|
|
- if(company && company != 9999999){
|
|
|
- ResCompany = self.getResCompany(company).shift();
|
|
|
- // var CurrencyBase = self.getResCurrency(ResCompany.currency_id[0]).shift();
|
|
|
- }else{
|
|
|
- ResCompany = self.ResCompany[0];
|
|
|
- // var CurrencyBase = self.getResCurrency(self.ResCompany[0].currency_id[0]).shift();
|
|
|
- }
|
|
|
- var getColumns=[];
|
|
|
- var rows=[];
|
|
|
- var table = this.$el.find("#table");
|
|
|
- var column = table.bootstrapTable('getVisibleColumns');
|
|
|
- var row = table.bootstrapTable('getData');
|
|
|
- if (action === 'pdf') {
|
|
|
- var data = _.map(column, function (val){return val.field});
|
|
|
- _.each(row,function (item){
|
|
|
- rows.push(_.pick(item, data));
|
|
|
- });
|
|
|
- _.each(_.map(column,function(val){
|
|
|
- return val}), function(item){
|
|
|
- getColumns.push([{
|
|
|
- title: item.title,
|
|
|
- dataKey: item.field
|
|
|
- }]);
|
|
|
- });
|
|
|
- this.drawPDF(_.flatten(getColumns),row,ResCompany)
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- drawPDF: function (getColumns,row,ResCompany) {
|
|
|
- var self = this;
|
|
|
- // var base64Img = 'data:,' + ResCompany.logo;
|
|
|
- var hoy = moment().format('DD/MM/YYYY');
|
|
|
- var totalPagesExp = "{total_pages_count_string}";
|
|
|
- var pdfDoc = new jsPDF();
|
|
|
-
|
|
|
- pdfDoc.autoTable(getColumns, row, {
|
|
|
- showHeader: 'firstPage',
|
|
|
- theme: 'grid',
|
|
|
- styles: {
|
|
|
- overflow: 'linebreak',
|
|
|
- fontSize: 7,
|
|
|
- columnWidth: 'wrap',
|
|
|
- },
|
|
|
- headerStyles: {
|
|
|
- fillColor: [76, 133, 248],
|
|
|
- fontSize: 8
|
|
|
- },
|
|
|
-
|
|
|
- columnStyles: {
|
|
|
- name : {columnWidth: 25},
|
|
|
- description : {columnWidth: 65},
|
|
|
- partner : {columnWidth: 25},
|
|
|
- date : {columnWidth: 18},
|
|
|
- stage : {columnWidth: 20},
|
|
|
- date_last_stage_update: {columnWidth: 18, halign:'center'},
|
|
|
- write_date: {columnWidth: 18, halign:'center'},
|
|
|
- user : {columnWidth: 20},
|
|
|
- },
|
|
|
- margin: { top: 20, horizontal: 7},
|
|
|
-
|
|
|
- addPageContent: function (data) {
|
|
|
- pdfDoc.setFontSize(12);
|
|
|
- pdfDoc.setFontStyle('bold');
|
|
|
- pdfDoc.setTextColor(40);
|
|
|
- pdfDoc.text('Histórico de CRM', data.settings.margin.left, 10);
|
|
|
-
|
|
|
-
|
|
|
- pdfDoc.setFontSize(9);
|
|
|
- pdfDoc.setFontStyle('normal');
|
|
|
- pdfDoc.setTextColor(40)
|
|
|
- // pdfDoc.text(6,14,tipo);
|
|
|
-
|
|
|
- // FOOTER
|
|
|
- var str = "Pagina " + data.pageCount;
|
|
|
- // Total page number plugin only available in jspdf v1.0+
|
|
|
- if (typeof pdfDoc.putTotalPages === 'function') {
|
|
|
- str = str + " de " + totalPagesExp;
|
|
|
- }
|
|
|
- pdfDoc.setFontSize(9);
|
|
|
- pdfDoc.setFontStyle('bold');
|
|
|
- pdfDoc.setTextColor(40);
|
|
|
- pdfDoc.text(175,pdfDoc.internal.pageSize.height - 5,str);
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- if (typeof pdfDoc.putTotalPages === 'function') {
|
|
|
- pdfDoc.putTotalPages(totalPagesExp);
|
|
|
- }
|
|
|
- row.pop();
|
|
|
- pdfDoc.save('Histórico de CRM.pdf')
|
|
|
+ select: function(event, ui) {
|
|
|
+ self.factSearch();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ updateUser: function() {
|
|
|
+ var self = this;
|
|
|
+ var store = self.$el.find('#current-store').val();
|
|
|
+ if (store != 9999999) {
|
|
|
+ var user = self.$el.find('#current-user').empty();
|
|
|
+ self.$el.find('#current-user').append('<option value="9999999">Todos los usuarios</option>');
|
|
|
+ _.each(self.ResUser, function(item) {
|
|
|
+ if (parseFloat(store) == item.store_id[0]) {
|
|
|
+ self.$el.find('#current-user').append('<option value="' + item.id + '">' + item.name + '</option>');
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ var user = self.$el.find('#current-user').empty();
|
|
|
+ self.$el.find('#current-user').append('<option value="9999999">Todos los usuarios</option>');
|
|
|
+ _.each(self.ResUser, function(item) {
|
|
|
+ self.$el.find('#current-user').append('<option value="' + item.id + '">' + item.name + '</option>');
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ /*====================================================================
|
|
|
+ BUILD
|
|
|
+ ====================================================================*/
|
|
|
+ BuildTable: function() {
|
|
|
+ var self = this;
|
|
|
+ var data = [];
|
|
|
+
|
|
|
+ var ResCrm = self.ResCrm;
|
|
|
+ _.each(ResCrm, function(item) {
|
|
|
+ data.push({
|
|
|
+ id: item.id,
|
|
|
+ name: self.valorNull(item.name),
|
|
|
+ description: self.valorNull(item.description),
|
|
|
+ partner: item.partner_id[1],
|
|
|
+ create_date: moment(item.create_date).format("DD/MM/YYYY"),
|
|
|
+ date_last_stage_update: moment(item.date_last_stage_update).format("DD/MM/YYYY"),
|
|
|
+ write_date: moment(item.write_date).format("DD/MM/YYYY"),
|
|
|
+ date: moment(item.create_date).format("YYYY-MM-DD"),
|
|
|
+ user: item.user_id[1],
|
|
|
+ stage_id: item.stage_id[0],
|
|
|
+ stage: item.stage_id[1],
|
|
|
+ partner_id: item.partner_id[0],
|
|
|
+ });
|
|
|
+ });
|
|
|
+ self.content = data;
|
|
|
+ self.loadTable(data);
|
|
|
+ var x = [];
|
|
|
+ var group_data = self.groupBy(data);
|
|
|
+ group_data.forEach((item, key) => {
|
|
|
+
|
|
|
+ var CrmStage = _.filter(self.CrmStage, function(item) {
|
|
|
+ return item.id == key;
|
|
|
+ });
|
|
|
+ x.push({
|
|
|
+ stage_name: CrmStage[0].name,
|
|
|
+ count: item.length,
|
|
|
+ });
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ self.CallCharts(x);
|
|
|
+ self.$el.find('.report-form').css('display', 'block');
|
|
|
+ self.$el.find('.search-form').unblock();
|
|
|
+ self.$el.find('.report-form').unblock();
|
|
|
+ },
|
|
|
+
|
|
|
+ loadTable: function(rowsTable) {
|
|
|
+ var self = this;
|
|
|
+ self.rowsData = rowsTable;
|
|
|
+ var table = this.$el.find('#table');
|
|
|
+ table.bootstrapTable('load', rowsTable);
|
|
|
+ },
|
|
|
+
|
|
|
+ CallCharts: function(data) {
|
|
|
+ var self = this;
|
|
|
+ var color = [];
|
|
|
+ color.push('#BCCEF4');
|
|
|
+ color.push('#A9E5E3');
|
|
|
+ color.push('#A0D995');
|
|
|
+ color.push('#C5D084');
|
|
|
+ color.push('#FAE187');
|
|
|
+ color.push('#FFBD82');
|
|
|
+ color.push('#FFA8B8');
|
|
|
+ color.push('#E5BEDD');
|
|
|
+ color.push('#C4ABFE');
|
|
|
+ color.push('#D8D8D8');
|
|
|
+
|
|
|
+ var names = _.flatten(_.map(data, function(item) {
|
|
|
+ return item.stage_name;
|
|
|
+ }));
|
|
|
+ var cash = _.flatten(_.map(data, function(item) {
|
|
|
+ return item.count;
|
|
|
+ }));
|
|
|
+
|
|
|
+ var receiptCanvas = $("#reporting-chart");
|
|
|
+ var context = receiptCanvas.get(0).getContext("2d");
|
|
|
+
|
|
|
+ if (window.bar != undefined) {
|
|
|
+ window.bar.destroy();
|
|
|
+ }
|
|
|
+
|
|
|
+ window.bar = new Chart(context, {
|
|
|
+ type: 'bar',
|
|
|
+ data: {
|
|
|
+ labels: names,
|
|
|
+ datasets: [{
|
|
|
+ label: '',
|
|
|
+ data: cash,
|
|
|
+ backgroundColor: color,
|
|
|
+ }]
|
|
|
},
|
|
|
- });
|
|
|
+ options: {
|
|
|
+ responsive: true,
|
|
|
+ responsiveAnimationDuration: 10,
|
|
|
+ maintainAspectRatio: false,
|
|
|
+ scales: {
|
|
|
+ yAxes: [{
|
|
|
+ ticks: {
|
|
|
+ beginAtZero: true
|
|
|
+ }
|
|
|
+ }]
|
|
|
+ },
|
|
|
+
|
|
|
+ legend: {
|
|
|
+ display: false,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ },
|
|
|
+ // end barchart
|
|
|
+
|
|
|
+ groupBy: function(list) {
|
|
|
+ const map = new Map();
|
|
|
+ list.forEach((item) => {
|
|
|
+ const key = item.stage_id;
|
|
|
+ const collection = map.get(key);
|
|
|
+ if (!collection) {
|
|
|
+ map.set(key, [item]);
|
|
|
+ } else {
|
|
|
+ collection.push(item);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return map;
|
|
|
+ },
|
|
|
+
|
|
|
+ clickOnAction: function(e) {
|
|
|
+ var self = this;
|
|
|
+ var ResCompany;
|
|
|
+ var action = this.$el.find(e.target).val();
|
|
|
+ var company = $('#current-company').val();
|
|
|
+ if (company && company != 9999999) {
|
|
|
+ var ResCompany = self.getResCompany(company).shift();
|
|
|
+ } else {
|
|
|
+ var ResCompany = self.ResCompany[0];
|
|
|
+ }
|
|
|
+ var getColumns = [];
|
|
|
+ var rows = [];
|
|
|
+ var table = this.$el.find("#table");
|
|
|
+ var column = table.bootstrapTable('getVisibleColumns');
|
|
|
+ var row = table.bootstrapTable('getData');
|
|
|
+
|
|
|
+ row.push({});
|
|
|
+ if (action === 'pdf') {
|
|
|
+ var data = _.map(column, function(val) {
|
|
|
+ return val.field
|
|
|
+ });
|
|
|
+ _.each(_.map(column, function(val) {
|
|
|
+ return val
|
|
|
+ }), function(item) {
|
|
|
+ getColumns.push([{
|
|
|
+ title: item.title,
|
|
|
+ dataKey: item.field
|
|
|
+ }]);
|
|
|
+ });
|
|
|
+ var pdf_title = 'Histórico de Oportunidades';
|
|
|
+ var pdf_type = 'l';
|
|
|
+ var pdf_name = 'historico_de_oportunidades_';
|
|
|
+ var pdf_columnStyles = {
|
|
|
+ create_date: {columnWidth: 18,halign: 'center'},
|
|
|
+ name: {columnWidth: 30, halign: 'left'},
|
|
|
+ description: {halign: 'left'},
|
|
|
+ partner: {columnWidth: 30,halign: 'left'},
|
|
|
+ stage: {columnWidth: 18,halign: 'center'},
|
|
|
+ user: {columnWidth: 30,halign: 'left'},
|
|
|
+ date_last_stage_update: {columnWidth: 18,halign: 'center'},
|
|
|
+ write_date: {columnWidth: 18,halign: 'center'},
|
|
|
+ };
|
|
|
+ var filter = self.getFilter();
|
|
|
+ var pdf = new model.eiru_reports.ReportPdfWidget(self);
|
|
|
+ pdf.drawPDF(
|
|
|
+ _.flatten(getColumns),
|
|
|
+ row,
|
|
|
+ ResCompany,
|
|
|
+ pdf_title,
|
|
|
+ pdf_type,
|
|
|
+ pdf_name,
|
|
|
+ pdf_columnStyles,
|
|
|
+ filter,
|
|
|
+ );
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ getFilter: function() {
|
|
|
+ var self = this;
|
|
|
+ var company = self.$el.find('#current-company').val();
|
|
|
+ var store = self.$el.find('#current-store').val();
|
|
|
+ var user = self.$el.find('#current-user').val();
|
|
|
+ var partner = self.$el.find('#current-partner').val();
|
|
|
+ var stage = self.$el.find('#current-stage').val();
|
|
|
+ var date = self.$el.find('#current-date').val();
|
|
|
+ var desde = self.$el.find('#from').val();
|
|
|
+ var hasta = self.$el.find('#to').val();
|
|
|
+
|
|
|
+ var filter = [];
|
|
|
+
|
|
|
+ if (company && company != 9999999) {
|
|
|
+ var ResCompany = _.filter(self.ResCompany, function(item) {
|
|
|
+ return item.id == company;
|
|
|
+ });
|
|
|
+ filter.push({
|
|
|
+ title: 'Empresa',
|
|
|
+ value: ResCompany[0].name,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ if (store && store != 9999999) {
|
|
|
+ var ResStore = _.filter(self.ResStore, function(item) {
|
|
|
+ return item.id == store;
|
|
|
+ });
|
|
|
+ filter.push({
|
|
|
+ title: 'Sucursal',
|
|
|
+ value: ResStore[0].name,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (user && user != 9999999) {
|
|
|
+ var ResUser = _.filter(self.ResUser, function(item) {
|
|
|
+ return item.id == user;
|
|
|
+ })
|
|
|
+ filter.push({
|
|
|
+ title: 'Responsable',
|
|
|
+ value: ResUser[0].name,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ if (partner && partner != 9999999) {
|
|
|
+ var ResPartner = _.filter(self.ResPartner, function(item) {
|
|
|
+ return item.id == partner;
|
|
|
+ })
|
|
|
+ filter.push({
|
|
|
+ title: 'Cliente',
|
|
|
+ value: ResPartner[0].name,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ if (stage && stage != 9999999) {
|
|
|
+ var CrmStage = _.filter(self.CrmStage, function(item) {
|
|
|
+ return item.id == stage;
|
|
|
+ })
|
|
|
+ filter.push({
|
|
|
+ title: 'Etapa',
|
|
|
+ value: CrmStage[0].name,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ if (date && date != 9999999) {
|
|
|
+ moment.locale('es', {
|
|
|
+ months: 'Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre'.split('_'),
|
|
|
+ });
|
|
|
+
|
|
|
+ if (date == 'range') {
|
|
|
+ filter.push({
|
|
|
+ title: 'Fecha',
|
|
|
+ value: desde + ' al ' + hasta,
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ if (date == 'today') {
|
|
|
+ var fecha = moment().format('DD/MM/YYYY');
|
|
|
+ }
|
|
|
+ if (date == 'yesterday') {
|
|
|
+ var fecha = moment().add(-1, 'days').format('DD/MM/YYYY');
|
|
|
+ }
|
|
|
+ if (date == 'currentMonth') {
|
|
|
+ var fecha = moment().format('MMMM/YYYY');
|
|
|
+ }
|
|
|
+ if (date == 'lastMonth') {
|
|
|
+ var fecha = moment().add(-1, 'months').format('MMMM/YYYY');
|
|
|
+ }
|
|
|
+ filter.push({
|
|
|
+ title: 'Fecha',
|
|
|
+ value: fecha,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return filter;
|
|
|
+ },
|
|
|
+ });
|
|
|
}
|