123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358 |
- function report_supplier(reporting){
- "use strict";
- var model = openerp;
- reporting.ReportSupplierWidget = reporting.Base.extend({
- template: 'ReportSupplier',
- rowsData :[],
- content :[],
- events:{
- 'click #toolbar > button' : 'clickOnAction',
- 'click #generate' : 'fetchGenerate',
- 'click-row.bs.table #table' : 'clickAnalysisDetail',
- },
- init : function(parent){
- this._super(parent);
- },
- start: function () {
- var table = this.$el.find('#table');
- table.bootstrapTable({data : self.rowsData});
- var date = new reporting.ReportDatePickerWidget(self);
- date.fecthFecha();
- this.fetchInitial();
- },
- valorNull:function(dato){
- var valor = "";
- if (dato){
- valor = dato;
- }
- return valor;
- },
- clickAnalysisDetail: function(e, row, $element,field){
- if (field == 'name'){
- this.do_action({
- name:"Registro de Cliente",
- type: 'ir.actions.act_window',
- res_model: "res.partner",
- views: [[false,'form']],
- target: 'new',
- domain: [['id','=', row.id]],
- context: {},
- flags: {'form': {'action_buttons': false, 'options': {'mode': 'view'}}},
- res_id: row.id,
- });
- }
- e.stopImmediatePropagation();
- },
- fetchInitial: function () {
- var self = this;
- this.fetchResUser().then(function(ResUser) {
- return ResUser;
- }).then(function (ResUser) {
- self.ResUser = ResUser;
- 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.fetchResCurrency();
- }).then(function(ResCurrency){
- self.ResCurrency = ResCurrency;
- });
- 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.fetchResPartner().then(function(ResPartner) {
- return ResPartner;
- }).then(function (ResPartner) {
- self.ResPartner = ResPartner;
- return self.BuildTable();
- });
- },
- /*=====================================================================
- USER
- =====================================================================*/
- fetchResUser: function() {
- var self = this;
- var defer = $.Deferred();
- var fields = ['id','name','store_id'];
- var domain = [['id','=',self.session.uid]];
- var ResUser = new model.web.Model('res.users');
- ResUser.query(fields).filter(domain).all().then(function (results) {
- defer.resolve(results);
- });
- return defer;
- },
- /*====================================================================
- RES PARTNER
- ====================================================================*/
- fetchResPartner: function() {
- var self = this;
- var state = self.$el.find('#current-state').val();
- var company = self.$el.find('#current-company').val();
- var type = self.$el.find('#current-type').val();
- var domain = [['active', '=', true], ['supplier', '=', true]];
- if(state == 'with'){
- domain.push(['debit','<',0]);
- }
- if(state == 'without'){
- domain.push(['debit','=',0]);
- }
- if(company && company != 9999999){
- domain.push(['company_id','=',parseInt(company)]);
- }
- if(type == 'company'){
- domain.push(['is_company','=',true]);
- }
- if(type == 'people'){
- domain.push(['is_company','!=',true]);
- }
- var ResPartner = new model.web.Model('res.partner');
- return ResPartner.call('getResPartner',[domain], {
- context: new model.web.CompoundContext()
- });
- },
- /*====================================================================
- 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 CURRENCY
- ====================================================================*/
- fetchResCurrency : function(){
- var self = this;
- var defer = $.Deferred();
- var fields = ['id','name', 'symbol', 'rate_silent', 'base', 'decimal_separator', 'decimal_places', 'thousands_separator', 'symbol_position'];
- var domain = [['active', '=', true]];
- var ResCurrency = new model.web.Model('res.currency');
- ResCurrency.query(fields).filter(domain).all().then(function(results) {
- defer.resolve(results);
- });
- return defer;
- },
- /*====================================================================
- GET RES COMPANY
- ====================================================================*/
- getResCompany: function (id) {
- var self = this;
- return _.filter(self.ResCompany,function (item) {
- return item.id == id;
- })
- },
- /*====================================================================
- GET RES CURRENCY BASE
- ====================================================================*/
- getResCurrency: function (id) {
- var self = this;
- return _.filter(self.ResCurrency,function (item) {
- return item.id === id;
- })
- },
- /*====================================================================
- BUILD
- ====================================================================*/
- BuildTable: function(){
- var self = this;
- var data = [];
- var company = $('#current-company').val();
- if(company && company != 9999999){
- var ResCompany = self.getResCompany(company).shift();
- var CurrencyBase = self.getResCurrency(ResCompany.currency_id[0]).shift();
- }else{
- var CurrencyBase = self.getResCurrency(self.ResCompany[0].currency_id[0]).shift();
- }
- var ResPartner = self.ResPartner;
- _.each(ResPartner, function(item){
- data.push({
- id : item.id,
- ruc : self.valorNull(item.ruc),
- name : item.name,
- street : self.valorNull(item.street),
- city : self.valorNull(item.city),
- phone : self.valorNull(item.phone),
- mobile : self.valorNull(item.mobile),
- email : self.valorNull(item.email),
- property_product_pricelist_purchase : self.valorNull(item.property_product_pricelist_purchase),
- debit : accounting.formatMoney(item.debit, '', CurrencyBase.decimal_places, CurrencyBase.thousands_separator, CurrencyBase.decimal_separator),
- amount : item.debit,
- /*==============================
- TOTAL FOOTER CONFIGURATION
- ==============================*/
- decimal_places : CurrencyBase.decimal_places,
- thousands_separator: CurrencyBase.thousands_separator,
- decimal_separator: CurrencyBase.decimal_separator,
- });
- });
- 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();
- },
- /*====================================================================
- LOAD BOOTSTRAP TABLE
- ====================================================================*/
- loadTable:function(rowsTable){
- var self = this;
- self.rowsData = rowsTable;
- var table = this.$el.find('#table');
- table.bootstrapTable('load', rowsTable);
- },
- /*====================================================================
- PRINT PDF
- ====================================================================*/
- 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');
- var amount = totalFormatter(row);
- row.push({
- ruc: 'Total',
- debit: amount,
- })
- 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
- }]);
- });
- /*
- ============================================================
- CONFIGURACION DEL PDF
- ============================================================
- */
- var pdf_title = 'Proveedores.';
- var pdf_type = 'l';
- var pdf_name = 'proveedores_';
- var pdf_columnStyles = {
- ruc :{columnWidth: 20, halign:'left'},
- name :{halign:'left'},
- street :{halign:'left'},
- city:{halign:'left'},
- phone : {columnWidth: 30, halign:'left'},
- mobile :{columnWidth: 30, halign:'left'},
- email:{columnWidth: 30, halign:'left'},
- property_product_pricelist_purchase:{columnWidth: 30, halign:'center'},
- debit:{columnWidth: 20, halign:'right'},
- };
- /*
- ============================================================
- LLAMAR FUNCION DE IMPRESION
- ============================================================
- */
- var filter = self.getFilter();
- var pdf = new reporting.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 state = self.$el.find('#current-state').val();
- var type = self.$el.find('#current-type').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(state && state != 9999999){
- filter.push({
- title: 'Estado',
- value: $("#current-state option:selected").text(),
- })
- }
- if(type && type != 9999999){
- filter.push({
- title: 'Tipo de Proveedor',
- value: $('#current-type option:selected').text(),
- })
- }
- return filter;
- },
- });
- }
|