Advertisement
Guest User

Untitled

a guest
Feb 10th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2. /**
  3.  * @ngdoc service
  4.  * @name orcamentoApp.automotiva.calculos
  5.  * @description
  6.  * # automotiva.calculos
  7.  * Factory in the orcamentoApp.
  8.  */
  9. angular.module('orcamentoApp').factory('automotivaCalculos', function($q, e670comModel, e044intModel, sessaoModel) {
  10.     var _parametros = {};
  11.     var __totalKM = 0;
  12.  
  13.     var _colunas = [
  14.         'valjan',
  15.         'valfev',
  16.         'valmar',
  17.         'valabr',
  18.         'valmai',
  19.         'valjun',
  20.         'valjul',
  21.         'valago',
  22.         'valset',
  23.         'valout',
  24.         'valnov',
  25.         'valdez'
  26.     ];
  27.     var _meses= [
  28.         'JAN',
  29.         'FEV',
  30.         'MAR',
  31.         'ABR',
  32.         'MAI',
  33.         'JUN',
  34.         'JUL',
  35.         'AGO',
  36.         'SET',
  37.         'OUT',
  38.         'NOV',
  39.         'DEZ'
  40.     ];
  41.  
  42.     // Verifica se o mes está ativo ou não
  43.     function _verificarMes(meses){
  44.         if (typeof(meses) == 'undefined')
  45.         {
  46.             meses = {JAN : true}
  47.         };
  48.  
  49.         var _retorno= [];
  50.  
  51.         for(var key in _meses)
  52.         {
  53.             if (meses[_meses[key]])
  54.             {
  55.                 _retorno.push(key);
  56.             }
  57.         }
  58.  
  59.         return _retorno;
  60.     }
  61.  
  62.     // Identifica a quantidade de meses ativos
  63.     function _qtdMeses(obj)
  64.     {
  65.         if (typeof(obj) == 'undefined')
  66.         {
  67.             return 1;
  68.         }
  69.  
  70.         var _qtd = 0;
  71.         for(var key in obj)
  72.         {
  73.             if (obj[key])
  74.             {
  75.                 _qtd++;
  76.             }
  77.         }
  78.  
  79.         return _qtd;
  80.     }
  81.  
  82.     // Calcula um resumo dos valores
  83.     function _resumirValores(obj){
  84.         // Variavel totoal
  85.         var _totalValor = 0;
  86.  
  87.        
  88.         // percorre resumos
  89.         for(var key in obj.contas){
  90.             obj.contas[key].valtot = obj.contas[key].valjan +
  91.                                      obj.contas[key].valfev +
  92.                                      obj.contas[key].valmar +
  93.                                      obj.contas[key].valabr +
  94.                                      obj.contas[key].valmai +
  95.                                      obj.contas[key].valjun +
  96.                                      obj.contas[key].valjul +
  97.                                      obj.contas[key].valago +
  98.                                      obj.contas[key].valset +
  99.                                      obj.contas[key].valout +
  100.                                      obj.contas[key].valnov +
  101.                                      obj.contas[key].valdez;
  102.              _totalValor += obj.contas[key].valtot;
  103.         }
  104.        
  105.         // Preenche valor
  106.         obj.resumo.VLRTOT = _totalValor;
  107.  
  108.         // retonar obj
  109.         return obj;
  110.     }
  111.  
  112.     function _calcular(obj) {
  113.         var deferred = $q.defer();
  114.  
  115.        
  116.  
  117.         // objeto principal
  118.         var lista = {
  119.             contas : [],
  120.             resumo : {
  121.                 VLRTOT : 0,
  122.                 KMPTOT : 0,
  123.                 BEM : ''
  124.             }
  125.         };
  126.  
  127.         // Recebe novos dados
  128.         var _parametros = typeof(obj) !== 'undefined' ? obj : null;
  129.  
  130.         // Verifica se objeto não esta nulo
  131.         if (_parametros == null) {return false;};
  132.        
  133.         if (!_parametros.hasOwnProperty('CODEMP')){
  134.             _parametros.CODEMP = sessaoModel.parametros.empresa.CODEMP;
  135.         }
  136.         // promessas
  137.         var promisses = [];
  138.  
  139.         promisses.push(e670comModel.carregarUnico(_parametros.CODCOM));
  140.         promisses.push(e044intModel.carregarUnico(_parametros.CODEMP,_parametros.CODCCU));
  141.  
  142.         $q.all(promisses).then(function(resolved){
  143.             var combustivel = resolved[0].dados[0];
  144.             var ctacontas = resolved[1][0];
  145.  
  146.             // Recebe valor de Valor por km
  147.             var _lankpl = typeof(_parametros.LANKPL) == 'undefined' ? 0 : parseFloat(_parametros.LANKPL);
  148.             // Recebe valor de KM / l
  149.             var _lanvpk = typeof(_parametros.LANVPK) == 'undefined' ? 0 : parseFloat(_parametros.LANVPK);
  150.  
  151.             // Valores de quilometragens (efetua tratamentos)
  152.             var _horjan = typeof(_parametros.HORJAN) == 'undefined' ? 0 : parseFloat(_parametros.HORJAN);
  153.             var _horfev = typeof(_parametros.HORFEV) == 'undefined' ? 0 : parseFloat(_parametros.HORFEV);
  154.             var _hormar = typeof(_parametros.HORMAR) == 'undefined' ? 0 : parseFloat(_parametros.HORMAR);
  155.             var _horabr = typeof(_parametros.HORABR) == 'undefined' ? 0 : parseFloat(_parametros.HORABR);
  156.             var _hormai = typeof(_parametros.HORMAI) == 'undefined' ? 0 : parseFloat(_parametros.HORMAI);
  157.             var _horjun = typeof(_parametros.HORJUN) == 'undefined' ? 0 : parseFloat(_parametros.HORJUN);
  158.             var _horjul = typeof(_parametros.HORJUL) == 'undefined' ? 0 : parseFloat(_parametros.HORJUL);
  159.             var _horago = typeof(_parametros.HORAGO) == 'undefined' ? 0 : parseFloat(_parametros.HORAGO);
  160.             var _horset = typeof(_parametros.HORSET) == 'undefined' ? 0 : parseFloat(_parametros.HORSET);
  161.             var _horout = typeof(_parametros.HOROUT) == 'undefined' ? 0 : parseFloat(_parametros.HOROUT);
  162.             var _hornov = typeof(_parametros.HORNOV) == 'undefined' ? 0 : parseFloat(_parametros.HORNOV);
  163.             var _hordez = typeof(_parametros.HORDEZ) == 'undefined' ? 0 : parseFloat(_parametros.HORDEZ);
  164.  
  165.             lista.resumo.KMPTOT = _horjan + _horfev + _hormar + _horabr + _hormai + _horjun +
  166.                                   _horjul + _horago + _horset + _horout + _hornov + _hordez;
  167.             lista.resumo.BEM = _parametros.CODBEM;
  168.  
  169.             // calcular manutenção
  170.             if (_lanvpk != 0)
  171.             {
  172.                 lista.contas.push({
  173.                     codigo : ctacontas.CTAMAN,
  174.                     conta : ctacontas.DESMAN,
  175.                     valjan : _horjan * _lanvpk,
  176.                     valfev : _horfev * _lanvpk,
  177.                     valmar : _hormar * _lanvpk,
  178.                     valabr : _horabr * _lanvpk,
  179.                     valmai : _hormai * _lanvpk,
  180.                     valjun : _horjun * _lanvpk,
  181.                     valjul : _horjul * _lanvpk,
  182.                     valago : _horago * _lanvpk,
  183.                     valset : _horset * _lanvpk,
  184.                     valout : _horout * _lanvpk,
  185.                     valnov : _hornov * _lanvpk,
  186.                     valdez : _hordez * _lanvpk,
  187.                 });
  188.  
  189.             }
  190.             else
  191.             {
  192.                 lista.contas.push({
  193.                     codigo : ctacontas.CTAMAN,
  194.                     conta : ctacontas.DESMAN,
  195.                     valjan : 0,
  196.                     valfev : 0,
  197.                     valmar : 0,
  198.                     valabr : 0,
  199.                     valmai : 0,
  200.                     valjun : 0,
  201.                     valjul : 0,
  202.                     valago : 0,
  203.                     valset : 0,
  204.                     valout : 0,
  205.                     valnov : 0,
  206.                     valdez : 0,
  207.                 });
  208.             }
  209.  
  210.             // calcular combustivel
  211.             if (_lanvpk != 0)
  212.             {
  213.                 lista.contas.push({
  214.                     codigo : ctacontas.CTACOM,
  215.                     conta : ctacontas.DESCOM,
  216.                     valjan : (_lankpl * _horjan) * combustivel.VALJAN,
  217.                     valfev : (_lankpl * _horfev) * combustivel.VALFEV,
  218.                     valmar : (_lankpl * _hormar) * combustivel.VALMAR,
  219.                     valabr : (_lankpl * _horabr) * combustivel.VALABR,
  220.                     valmai : (_lankpl * _hormai) * combustivel.VALMAI,
  221.                     valjun : (_lankpl * _horjun) * combustivel.VALJUN,
  222.                     valjul : (_lankpl * _horjul) * combustivel.VALJUL,
  223.                     valago : (_lankpl * _horago) * combustivel.VALAGO,
  224.                     valset : (_lankpl * _horset) * combustivel.VALSET,
  225.                     valout : (_lankpl * _horout) * combustivel.VALOUT,
  226.                     valnov : (_lankpl * _hornov) * combustivel.VALNOV,
  227.                     valdez : (_lankpl * _hordez) * combustivel.VALDEZ,
  228.                 });
  229.             }
  230.             else
  231.             {
  232.                 lista.contas.push({
  233.                     codigo : ctacontas.CTACOM,
  234.                     conta : ctacontas.DESCOM,
  235.                     valjan : 0,
  236.                     valfev : 0,
  237.                     valmar : 0,
  238.                     valabr : 0,
  239.                     valmai : 0,
  240.                     valjun : 0,
  241.                     valjul : 0,
  242.                     valago : 0,
  243.                     valset : 0,
  244.                     valout : 0,
  245.                     valnov : 0,
  246.                     valdez : 0,
  247.                 });
  248.             }
  249.  
  250.             if (!_parametros.hasOwnProperty('CODEQP')) {
  251.  
  252.                 // calcular impostos
  253.                 if (typeof(_parametros.VLRIMP) != 'undefined')
  254.                 {
  255.                     var _qtdMImp = _qtdMeses(_parametros.MESIMP);
  256.                     var _MImp = _verificarMes(_parametros.MESIMP);
  257.                     var _vlrMImp = parseFloat(_parametros.VLRIMP) / _qtdMImp;
  258.  
  259.                     lista.contas.push({codigo : ctacontas.CTAIMP, conta : ctacontas.DESIMP});
  260.                     var pos = lista.contas.length - 1;
  261.                     for(var key in _colunas)
  262.                     {
  263.                         if (_MImp.indexOf(key) !== -1)
  264.                         {
  265.                             lista.contas[pos][_colunas[key]] = _vlrMImp;
  266.                         }
  267.                         else
  268.                         {
  269.                             lista.contas[pos][_colunas[key]] = 0;
  270.                         }
  271.                     }
  272.  
  273.                 }
  274.                 else
  275.                 {
  276.                     lista.contas.push({codigo : ctacontas.CTAIMP, conta : ctacontas.DESIMP});
  277.  
  278.                     for(var key in _colunas)
  279.                     {
  280.                         lista.contas[pos][_colunas[key]] = 0;
  281.                     }
  282.                 }
  283.             } else {
  284.                 // calcular revisão
  285.                 if (typeof(_parametros.VLRREV) != 'undefined')
  286.                 {
  287.                     var _qtdMRev = _qtdMeses(_parametros.MESREV);
  288.                     var _MRev = _verificarMes(_parametros.MESREV);
  289.                     var _vlrMRev = parseFloat(_parametros.VLRREV) / _qtdMRev;
  290.  
  291.                     lista.contas.push({codigo : ctacontas.CTAREV, conta : 'Revisão'});
  292.                     var pos = lista.contas.length - 1;
  293.                     for(var key in _colunas)
  294.                     {
  295.                         if (_MRev.indexOf(key) !== -1)
  296.                         {
  297.                             lista.contas[pos][_colunas[key]] = _vlrMRev;
  298.                         }
  299.                         else
  300.                         {
  301.                             lista.contas[pos][_colunas[key]] = 0;
  302.                         }
  303.                     }
  304.  
  305.                 }
  306.                 else
  307.                 {
  308.                     lista.contas.push({codigo : ctacontas.CTAREV, conta : ctacontas.DESREV});
  309.  
  310.                     for(var key in _colunas)
  311.                     {
  312.                         lista.contas[pos][_colunas[key]] = 0;
  313.                     }
  314.                 }
  315.             }
  316.  
  317.             // calcular seguro
  318.             if (typeof(_parametros.VLRSEG) != 'undefined')
  319.             {
  320.                 var _qtdMSeg = _qtdMeses(_parametros.MESSEG);
  321.                 var _MSeg = _verificarMes(_parametros.MESSEG);
  322.                 var _vlrMSeg = parseFloat(_parametros.VLRSEG) / _qtdMSeg;
  323.  
  324.                 lista.contas.push({codigo : ctacontas.CTASEG, conta : ctacontas.DESSEG});
  325.                 var pos = lista.contas.length - 1;
  326.                 for(var key in _colunas)
  327.                 {
  328.                     if (_MSeg.indexOf(key) !== -1)
  329.                     {
  330.                         lista.contas[pos][_colunas[key]] = _vlrMSeg;
  331.                     }
  332.                     else
  333.                     {
  334.                         lista.contas[pos][_colunas[key]] = 0;
  335.                     }
  336.                 }
  337.             }
  338.             else
  339.             {
  340.                 lista.contas.push({codigo : ctacontas.CTASEG, conta : ctacontas.DESSEG});
  341.                 for(var key in _colunas)
  342.                 {
  343.                     lista.contas[pos][_colunas[key]] = 0;
  344.                 }
  345.             }
  346.  
  347.             // Calcular depreciação
  348.             var _vlrdep = typeof(_parametros.VLRDEP) == 'undefined' ? 0 : parseFloat(_parametros.VLRDEP);
  349.  
  350.             if (_vlrdep == 0)
  351.             {
  352.                 lista.contas.push({
  353.                     codigo : ctacontas.CTADEP,
  354.                     conta : ctacontas.DESDEP,
  355.                     valjan : 0,
  356.                     valfev : 0,
  357.                     valmar : 0,
  358.                     valabr : 0,
  359.                     valmai : 0,
  360.                     valjun : 0,
  361.                     valjul : 0,
  362.                     valago : 0,
  363.                     valset : 0,
  364.                     valout : 0,
  365.                     valnov : 0,
  366.                     valdez : 0,
  367.                 });
  368.             }
  369.             else
  370.             {
  371.                 lista.contas.push({
  372.                     codigo : ctacontas.CTADEP,
  373.                     conta : ctacontas.DESDEP,
  374.                     valjan : _vlrdep / 12,
  375.                     valfev : _vlrdep / 12,
  376.                     valmar : _vlrdep / 12,
  377.                     valabr : _vlrdep / 12,
  378.                     valmai : _vlrdep / 12,
  379.                     valjun : _vlrdep / 12,
  380.                     valjul : _vlrdep / 12,
  381.                     valago : _vlrdep / 12,
  382.                     valset : _vlrdep / 12,
  383.                     valout : _vlrdep / 12,
  384.                     valnov : _vlrdep / 12,
  385.                     valdez : _vlrdep / 12,
  386.                 });
  387.             }
  388.             // resumir bem
  389.             var _lista = _resumirValores(lista);
  390.  
  391.             deferred.resolve(_lista);
  392.         });
  393.  
  394.  
  395.         return deferred.promise;
  396.     }
  397.  
  398.     // Objeto principal
  399.     var automotiva  = {
  400.         pronto : false,
  401.         parametros : _parametros,
  402.         // Retorno de dados
  403.         lista: {
  404.             contas : [],
  405.             resumo : {}
  406.         },
  407.         // Processar contas
  408.         calcularContas : function(obj){
  409.             var deferred = $q.defer();
  410.             _calcular(obj).then(function(data){
  411.                 automotiva.lista = data;
  412.                 automotiva.pronto = true;
  413.                 deferred.resolve(angular.copy(automotiva));
  414.             });
  415.  
  416.             return deferred.promise;
  417.         }
  418.     }
  419.  
  420.     return automotiva;
  421. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement