{"version":3,"sources":["string-shim.js","app.modules.js","app.routes.js","app.run.js","alterar-email/alterar-email.module.js","alterar-email/alterar-email.routes.js","alterar-senha/alterar-senha.module.js","alterar-senha/alterar-senha.routes.js","configuracoes/configuracoes.module.js","configuracoes/configuracoes.routes.js","home/home.module.js","home/home.routes.js","login/login.module.js","login/login.routes.js","main/main.module.js","primeiro-acesso/primeiro-acesso.module.js","primeiro-acesso/primeiro-acesso.routes.js","recuperar-acesso/recuperar-acesso.module.js","recuperar-acesso/recuperar-acesso.routes.js","_fornecedor/fornecedor.module.js","_fornecedor/fornecedor.routes.js","alterar-email/controllers/alterar-email.controller.js","alterar-email/services/new-email.service.js","alterar-senha/controllers/alterar-senha.controller.js","alterar-senha/services/reset-password.service.js","configuracoes/controllers/configuracoes.controller.js","home/controllers/home.controller.js","login/controllers/login.controller.js","main/controllers/main.controller.js","primeiro-acesso/controllers/primeiro-acesso.controller.js","primeiro-acesso/services/primeiro-acesso.service.js","recuperar-acesso/controllers/recuperar-acesso.controller.js","recuperar-acesso/services/new-password.service.js","_fornecedor/controllers/fornecedor.controller.js","_fornecedor/submodules/administracao/administracao.routes.js","_fornecedor/submodules/conta-corrente/conta-corrente.routes.js","_fornecedor/submodules/contratos/contratos.routes.js","_fornecedor/submodules/pagamentos/pagamentos.routes.js","_fornecedor/submodules/administracao/controller/administracao.controller.js","_fornecedor/submodules/administracao/services/administracao.services.js","_fornecedor/submodules/conta-corrente/controller/conta-corrente.controller.js","_fornecedor/submodules/conta-corrente/factories/params.factory.js","_fornecedor/submodules/contratos/controller/contratos.controller.js","_fornecedor/submodules/contratos/modal-detalhe-contrato/modal-detalhe-contrato.directive.js","_fornecedor/submodules/contratos/services/contratos.services.js","_fornecedor/submodules/pagamentos/controller/pagamentos.controller.js","_fornecedor/submodules/pagamentos/services/pagamentos.services.js","_fornecedor/submodules/conta-corrente/submodules/fixacao/fixacao.routes.js","_fornecedor/submodules/conta-corrente/submodules/nota-fiscal/nota-fiscal.routes.js","_fornecedor/submodules/conta-corrente/submodules/pagamento/pagamento.routes.js","_fornecedor/submodules/conta-corrente/submodules/recebimentos/recebimentos.routes.js","_fornecedor/submodules/conta-corrente/submodules/saldo-contrato/saldo-contrato.routes.js","_fornecedor/submodules/conta-corrente/submodules/fixacao/controller/fixacao.controller.js","_fornecedor/submodules/conta-corrente/submodules/nota-fiscal/modals/modal-detalhe-nota.directive.js","_fornecedor/submodules/conta-corrente/submodules/nota-fiscal/controller/nota-fiscal.controller.js","_fornecedor/submodules/conta-corrente/submodules/pagamento/controller/pagamento.controller.js","_fornecedor/submodules/conta-corrente/submodules/recebimentos/modal-detalhe-recebimento/modal-detalhe-recebimento.directive.js","_fornecedor/submodules/conta-corrente/submodules/recebimentos/controller/recebimentos.controller.js","_fornecedor/submodules/conta-corrente/submodules/saldo-contrato/controller/saldo-contrato.controller.js","_fornecedor/submodules/conta-corrente/submodules/saldo-contrato/submodules/detalhado/detalhado.routes.js","_fornecedor/submodules/conta-corrente/submodules/saldo-contrato/submodules/resumido/resumido.routes.js","_fornecedor/submodules/conta-corrente/submodules/saldo-contrato/submodules/detalhado/controller/detalhado.controller.js","_fornecedor/submodules/conta-corrente/submodules/saldo-contrato/submodules/resumido/controller/resumido.controller.js","administracao.module.js","administracao.routes.js","administracao.controller.js","fornecedor.module.js","fornecedor.routes.js","fornecedor.controller.js","modules.js","components.module.js","administration-mobile-options/administration-mobile-options.directive.js","administration-options/administration-options.directive.js","current-public-key/current-public-key.directive.js","focus/focus.directive.js","email/email.directive.js","footer/pagFooter.directive.js","header/pagHeader.directive.js","login-panel/login-panel.directive.js","modal-adicionar-usuario/modal-adicionar-usuario.directive.js","modal-grupo-acesso/modal-grupo-acesso.directive.js","modal-usuario-externo/modal-usuario-externo.directive.js","navigation-options/navigation-options.directive.js","visibilidade-tabela/visibilidade-tabela.directive.js","system.modules.js","constants/administration-dynamic-options.constant.js","constants/administration-options.constant.js","constants/app-token-names.constant.js","constants/auth-events.constant.js","constants/claims-type.constant.js","constants/conta-corrente-tabs.constant.js","constants/navigation.constant.js","constants/portal-public-keys.constant.js","constants/roles.constant.js","constants/saldo-tabs.constant.js","constants/side-bar-enabled.constant.js","constants/supplier-dynamic-options.constant.js","constants/supplier-options.constant.js","constants/web-api.constant.js","directives/permission.js","factories/helper.factory.js","factories/kendo-datasource-filter-generator.factory.js","factories/kendo-datasource.factory.js","factories/modules-loaded.factory.js","factories/session-manager.factory .js","factories/token-manager.factory.js","factories/user-manager.factory.js","factories/visibilidade-menu-lateral.factory.js","interceptors/authentication.interceptor.js","interceptors/spinnerHttpResponseInterceptor.factory.js","services/authentication.service.js","services/dynamic-modules-loader.service.js","services/flash.service.js","services/modal-adicionar-usuario.service.js","services/modal-usuario-externo.service.js","services/navigation.service.js","services/session.service.js","services/view.service.js"],"names":["Array","prototype","indexOf","searchElement","this","TypeError","t","Object","len","length","n","arguments","Number","Infinity","Math","floor","abs","k","max","String","startsWith","str","lastIndexOf","trim","replace","angular","module","ConfigBunge","$stateProvider","$urlRouterProvider","$locationProvider","$httpProvider","$resourceProvider","$injector","FlashProvider","$ocLazyLoadProvider","html5Mode","enabled","requireBase","hashPrefix","interceptors","push","otherwise","$state","get","$rootScope","$dynamic","TokenManagerFactory","SessionManagerFactory","$location","dest","$$url","split","go","GetToken","then","token","currentUser","CreateSession","LoadModulesFromToken","found","forEach","state","name","join","defaults","stripTrailingSlashes","kendo","culture","ui","Menu","fn","_mouseleave","setTemplate","config","$window","AUTH_EVENTS","AuthenticationService","Flash","Session","ViewService","PORTAL_PUBLIC_KEYS","DynamicModulesLoader","$on","event","next","current","funcAtual","GetCurrentAppFunc","currentPortal","portal","GetFirstPortalByKey","app","GetFirstAppByName","document","title","NmApp","descriptionApp","clear","currentState","restrictedPage","verificarPaginaRestrita","$broadcast","notAuthenticated","preventDefault","toState","toParams","fromState","fromParams","userStatus","toLowerCase","RenewToken","ClearCredentials","run","nomeState","ConfigAlterarEmail","url","templateUrl","controller","controllerAs","ConfigAlterarSenha","Config","abstract","ConfigHome","ConfigLogin","ConfigPrimeiroAcesso","ConfigRecuperarAcesso","ConfigFornecedor","resolve","depsForn","ModulesLoaded","GetLoaded","window","location","pathname","href","AlterarEmailController","NewEmailService","$scope","vm","init","userType","RecuperarEmail","userName","result","email","salvar","form","req","Login","Email","Senha","password","ConfirmSenha","confirmPassword","Alterar","limpar","create","$setPristine","$inject","ENDPOINT_URI","$resource","data","program","Program","$recuperarEmail","codigoSts","ConfimacaoSenha","$alterarEmail","basePath","endpoint_backendReq","alterarEmail","method","recuperarEmail","transformResponse","fromJson","params","service","AlterarSenhaController","ResetPasswordService","currentApp","GetViewPublicKey","newPassword","res1","RegExp","test","res2","res3","res4","Password","NewPassword","resetPassword","status","resource","Resource","$resetPassword","endpoint_sts","ConfiguracoesController","active","item","route","menuItens","legenda","HomeController","NavigationService","initController","navPermissions","BuildUserMenu","navPerm","value","key","dontShowHome","logoff","LoginController","$http","MainController","USER_ROLES","userRoles","isAuthorized","setCurrentUser","user","registerAccess","appName","_redirect","currentTarget","model","userID","userId","navigation","navIndex","navItem","publicKeyPortal","publicKey","idUser","post","PrimeiroAcessoController","PrimeiroAcessoService","$stateParams","tipo","showForm","chave","VerificarChave","erro","mensagem","novoTipo","cpf","undefined","cnpj","recuperar","dataLoading","NumeroDocumento","Requisitar","message","executar","passwordConfirmacao","Chave","ConfirmacaoSenha","Executar","TipoRegistro","$criarPedido","res","innerException","exceptionMessage","$executarPedido","$verificarChave","tipoPedido","criarPedido","executarPedido","verificarChave","RecuperarSenhaController","NewPasswordService","Reset","FornecedorController","VisibilidadeMenuLateralFactory","sideBarMenuVisivel","getVisivel","expandir","setVisivel","GoToFirstView","ConfigParametros","$urlRouterProviderRef","$stateProviderRef","RunParametros","posicao","tipoConsulta","codigoFornecedor","codigoNucleo","codigoProduto","anoSafra","contrato","filtros","documentoFornecedor","documentoFazenda","contratosSafra","previousLocation","path","filtrosContratos","actualLocation","FornecedorAdministracaoController","KendoDataSourceFactory","FornecedorAdministracaoService","HelperFactory","$compile","$timeout","comboUserOnChange","limparTabela","fornecedorSelecionado","dataItem","select","$evalAsync","grid","dataSource","limparFornecedor","fornecedores","text","comboBoxFornecedorOnChange","evt","selected","copy","novoFornecedorSelecionado","gridFornecedorEditor","container","options","iniciar","endpoint","fornecedor","sort","field","dir","$adicionarFiltro","CodigoFornecedor","$gerarDataSource","element","appendTo","contents","comboNovoFornecedor","setDataSource","gridSave","codigoFornecedorOrigem","codigoFornecedorDestino","addRelacaoFornecedor","filtrar","gridToolbar","getAdminGridToolbar","gridDeleteButton","getAdminDeleteButtonTemplate","usuariosDataSource","filter","minLength","dataTextField","autoBind","change","ds","pageable","pageSize","excluir","confirmation","alertaConfirma","DocumentoFornecedorDestino","NomeFornecedorDestino","removeRelacaoFornecedor","CodigoRelacaoFornecedor","success","error","comboBoxFornecedorDataSource","dataValueField","paramsGridOptions","editable","resizable","filterable","sortable","columnMenu","noRecords","template","toolbar","columns","width","editor","headerAttributes","style","attributes","command","messages","commands","edit","update","destroy","canceledit","dataBound","e","sender","find","css","save","endpoint_fornecedorReq","codigoRelacaoFornecedor","getFornecedores","STS","$adicionarIdModelo","$adicionarCampoModelo","type","FornecedorContaCorrenteController","FOR_CC_TABS_CONSTANT","expand","contratoComboOptions","placeholder","ContratoCompraMTP","transitionTo","reload","redirect","tabItem","heading","tabData","codigoContrato","getPosicao","voltar","ContaCorrenteParamsFactory","getHeader","OData.DocumentoFornecedor","OData.DocumentoFazenda","OData.CodigoFornecedor","OData.CodigoNucleo","OData.CodigoProduto","OData.Posicao","OData.ContratoCompraMtp","OData.CodigoEmpresa","CodigoEmpresa","OData.CodigoFilial","CodigoFilial","OData.AnoSafra","OData.ContratosSafra","JSON","stringify","factory","FornecedorContratosController","FornecedorContratosService","$q","recarregarCombos","vemDoFiltro","$submitted","carregarFazenda","fazendaSelecionada","Documento","promises","getRegionalData","produtoSelecionado","codigo","safraSelecionado","getProdutoData","regionalSelecionado","getAnoSafraData","all","values","retornoRegional","unshift","nome","regional","retornoProduto","produto","retornoAnoSafra","safra","fazendaOnChange","fazenda","getFazendas","fazendas","NomeFantasia","limparFazenda","limparRegional","limparProduto","limparSafra","reiniciarPosicao","regionalOnChange","produtoOnChange","safraOnChange","ehUsuarioExterno","userRole","toUpperCase","dataSourceFornecedor","fazendaDataSource","regionalDataSource","produtoDataSource","safraDataSource","read","userSystemName","_data","DescricaoFornecedor","abrirDetalhe","contratoDetalhe","contratoMTP","codigoEmpresa","codigoFilial","abrirContaCorrente","AnoSafra","ultimoFiltro","getContratosFromDatasource","substring","header","OData.TipoConsultaContrato","setOptions","$adicionarCampoAggregate","getMensagemContaCorrente","response","MensagemContaCorrenteContratos","habilitarFiltro","excel","allPages","fileName","mergeFooterTemplate","$","not","remove","addClass","insertAfter","footerAttributes","footerTemplate","aggregates","QuantidadeContratada","sum","toString","QuantidadeEntregue","QuantidadeEntregar","QuantidadeFixar","hidden","QuantidadeTotalFixadaPaga","QuantidadeRecebidaFixada","QuantidadeNaoCumpridaPaga","QuantidadeNaoCumpridaFixa","QuantidadeNaoCumprida","deferred","defer","OData.ComChaves","obj","promise","directive","restrict","transclude","scope","onRemove","$uibModal","$uibModalStack","paramsGridPrazosEntregaOptions","DataSource","prazoEntrega","page","schema","fields","dataPrazoEntrega","dataPrazoRetirada","quantidadePrazoEntrega","total","moveGridToolbarToFooter","paramsGridPrazosFixacaoOptions","prazoFixacao","dataFimPrazoFixacao","dataInicioPrazoFixacao","quantidadeProgramada","quantidadeFixada","quantidadePrazoFixacao","close","dismissAll","modalInstance","open","animation","size","selectedItem","idFornecedor","idRegional","idProduto","FornecedorPagamentosController","FornecedorPagamentosService","limparDatas","dataInicio","dataFim","Codigo","tfooter","footer","trFooterClone","childNodes","cloneNode","innerHTML","ValorProgramadoDolar","_aggregateResult","append","ValorProgramadoReal","ValorPago","getTime","FornecedorContaCorrenteFixacaoController","dataSourceParams","somaQuantidadeFixadaDolar","QuantidadeFixadaDolar","somaValorFixacaoDolar","ValorFixacaoDolar","somaValorImpostoDolar","ValorImpostoDolar","somaValorAtencipado","ValorAtencipadoDolar","somaValorSaldo","ValorSaldoDolar","QuantidadeFixadaReal","ValorFixacaoReal","ValorImpostoReal","ValorAtencipadoReal","ValorSaldoReal","ModalDetalheNota","ModalDetalheNotaController","PesoNota","ValorTotalNota","ValorContribuicaoSocial","ValorFethabFund","ValorIcms","windowClass","FornecedorContaCorrenteNotaFiscalController","headerParams","notaFiscalDetalhe","FornecedorContaCorrentePagamentoController","ValorPagamento","QuantidadePesoLiquidoOrigem","QuantidadePesoLiquidoDestino","media","ProporcaoUmidadeDesconto","ProporcaoImpurezaDesconto","ProporcaoDeterioracaoDesconto","ProporcaoEsverdeadoDesconto","QuantidadePesoLiquidoFinal","FornecedorContaCorrenteRecebimentosController","recebimentoDetalhe","OData.CodigoFilialEntrega","CodigoFilialEntrega","FornecedorContaCorrenteSaldoContratoController","FOR_SALDO_TABS_CONSTANT","loadTabs","FornecedorContaCorrenteSaldoContratoDetalhadoController","group","aggregate","groupable","mergeSubFooterTemplate","groupFooterTemplate","groupFooterAttributes","ValorMoedaInterna","FornecedorContaCorrenteSaldoContratoResumidoController","ConfigAdministracao","depsAdmin","AdministracaoController","link","attrs","admPermissions","getIndexActive","z","i","toggleObject","ADM_OPTIONS","retrair","setTimeout","GetUserSubMenu","subRoutes","contemSubRoute","index","array","publicKeyChange","currentLocation","appList","GetAppsByName","appIndex","menu","internalKey","showPublicKey","html","trigger","$watch","focus","EMAIL_REGEXP","require","elm","ctrl","$validators","modelValue","$isEmpty","$templateRequest","SIDEBAROPTS","getTemplateUrl","checkSideBarEnabled","sideBarEnabled","regEx","linker","showUserMenuContext","closeSearchWhenClickingElsewhere","callbackOnClose","clickedElement","target","elementClasses","classList","clickedOnSearchDrawer","contains","changeSideBar","querySelector","toggleClass","hasClass","onclick","login","username","loginSuccess","loginFailed","json","parse","content","getErrorMessage","ModalAdicionarUsuarioService","Id","CodigoUsuario","idUsuarioFornecedor","DocumentoFornecedor","Nome","editar","criarNovo","motivo","registroNovo","pesquisarCPF","dSource","AdministracaoAdministradorDePerfilService","guid","s4","random","appsSelected","permissionsSelected","gridFuncionalidades","id","Functionality","selectedFuncionalidade","editRow","Description","refresh","funcionalidadesOptions","AppId","filtered","bIds","newData","saveRow","splice","FunctionalityList","IdFunctionality","ReadOnly","atualizarFuncGroup","cadastrarFuncGroup","possuiFuncionalidades","ModalUsuarioExternoService","Status","StatusId","Value","atualizarStatusEmail","statusDataSource","Text","PATHNAME","pathSplit","stateTopAtual","stateTop","tabela","show","visibilidadeTabela","hide","after","ADM_NAV_DYN_OPTIONS","parametros","consultar-registro-acesso","usuario-externo","usuarios-por-fornecedor","administrador-de-aplicacao","manter-portal","manter-aplicacao","manter-funcionalidade","manter-perfil","usuario-perfil","acesso-empresa-filial","ADM_NAV_OPTIONS","order","consultarRegistroLog","UsuarioExterno","UsuariosPorFornecedor","AdministradorDeAplicacao","ManterPortal","ManterAplicacao","ManterFuncionalidade","AdministradorDePerfil","onlyAdmin","UsuarioPerfil","AcessoEmpresaFilial","APP_TOKEN_NAMES","EDI","OCW","AGD","MON","ADM","TEF","FOR","constant","logoutSuccess","sessionTimeout","notAuthorized","APP","PERMISSION","EXP","USERTYPE","NAV_OPTIONS","inicio","isRootMenu","isExternalApp","administrador","imgFileName","logistico","endpoint_logistico","administracao","interno","externo","FOR_NAV_DYN_OPTIONS","contratos","conta-corrente","pagamentos","FOR_NAV_OPTIONS","invisivel","endpoint_backend","endpoint_stsOdata","endpoint_fornecedor","permission","elem","functionality","permissions","ngDialog","indexColSpan","tds","tdColSpan","setAttribute","thead","columnsSize","helper","validate","uiSelect","validateUiSelect","$setTouched","$error","getAdminGridToolbarNoPermission","getAdminDeleteButtonTemplateNoPermission","getAdminEditButtonTemplate","setKendoTitle","cssItem","label","attr","$setValidity","gerarId","chars","string_length","randomstring","x","letterOrNumber","newNum","rnum","listaParaObjeto","list","idAttr","parentAttr","childrenAttr","treeList","lookup","Name","parentId","objetoParaLista","treeObj","atributos","dePara","levelAttr","gerarIdsLayout","level","resgataAtributosComValor","listaAtributosComValor","abriu","numeroItem","flattenChild","childObj","childCopy","extend","atributosComValor","mostrarAtributos","atributo","concat","processChildren","process","alerta","plain","openConfirm","alertaConfirmaStateChangeAlert","mensage","isDefined","campo","Message","tbody","querySelectorAll","KendoDataSourceFilterGenerator","operador","valor","operator","filterSet","filters","$iniciarFilterSet","parentNode","logic","parent","$adicionarFiltroLambda","childParams","$finalizarFilterSet","gerandoFilterSet","$gerarFiltro","ENDPOINT","toOdataFilter","useOdataFour","idx","format","ignoreCase","odataFilters","odataFiltersVersionFour","any","timezone","apply","oArg","geradorFiltros","modelo","gerarDataSource","transport","option","mappers","$count","query","401","403","console","log","batch","serverPaging","serverSorting","serverFiltering","noop","useVersionFour","$filter","orderby","expr","map","$orderby","skip","$skip","take","$top","eq","neq","gt","gte","lt","lte","doesnotcontain","endswith","startswith","isnull","isnotnull","isempty","isnotempty","collection","lambdaOperator","expression","$setFiltro","$gerarDataSourceChild","lambda","headers","itens","loaded","Create","DecodeToken","DestroySession","Destroy","GetSession","IsAuthorized","authorizedRoles","isArray","IsAuthenticated","jwtHelper","RemoveToken","hub","onConnect","del","SetToken","set","decodeToken","storage","CrossStorageClient","host","port","UserManagerFactory","RemoveUser","GetUser","SetUser","visivel","request","appKey","canceler","timeout","responseError","reject","$log","usSpinnerService","isLoading","xhrResolutions","xhrCreations","updateStatus","loading","spin","stop","spinnerOpts","lines","radius","scale","corners","color","opacity","rotate","direction","speed","trail","fps","zIndex","className","top","left","shadow","hwaccel","position","requestError","rejection","$gerarToken","Authorization","resVerificar","SetCredentials","msg","usuario","$renovarToken","gerarToken","headersGetter","renovarToken","$ocLazyLoad","loadModulesFromToken","modules","GetPortalModules","dynamic","keys","load","serie","cache","files","FlashService","initService","clearFlashMessage","flash","keepAfterLocationChange","Success","Error","myResource","MyResource","$criarNovo","$editar","$atualizarStatusEmail","Navigation","getUserSubMenu","subMenuItens","subMenu","menuIndex","incluir","a","b","buildUserMenu","menuItem","CheckAppPermission","canISeeThisTab","CanISeeThisTab","CLAIMS_TYPE","parsedToken","role","claims","Claims","profile","groupList","claimIndex","claim","claimType","Type","groupIndex","newGroup","EmpresaList","PortalList","PortalClaim","newPortal","PublicKey","AppList","funcList","getPermissionList","navOptions","functionalityList","funcIndex","func","readOnly","hasApp","getFirstPortalByKey","portalIndex","getFirstAppByName","getAppsByName","getPortalModules","portalList","viewService","goToFirstView","subMenus","apps","lowestMenu","getViewPublicKey","getCurrentAppFunc","retorno","ehModulo","indexFunc"],"mappings":"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","file":"app.min.js","sourcesContent":["// Some common IE shims... indexOf, startsWith, trim\r\n\r\n/*\r\n Really? IE8 Doesn't have .indexOf\r\n*/\r\nif (!Array.prototype.indexOf) {\r\n Array.prototype.indexOf = function (searchElement /*, fromIndex */) {\r\n \"use strict\";\r\n if (this === null) {\r\n throw new TypeError();\r\n }\r\n var t = Object(this);\r\n var len = t.length >>> 0;\r\n\r\n if (len === 0) {\r\n return -1;\r\n }\r\n var n = 0;\r\n if (arguments.length > 1) {\r\n n = Number(arguments[1]);\r\n if (n != n) { // shortcut for verifying if it's NaN\r\n n = 0;\r\n } else if (n !== 0 && n != Infinity && n != -Infinity) {\r\n n = (n > 0 || -1) * Math.floor(Math.abs(n));\r\n }\r\n }\r\n if (n >= len) {\r\n return -1;\r\n }\r\n var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);\r\n for (; k < len; k++) {\r\n if (k in t && t[k] === searchElement) {\r\n return k;\r\n }\r\n }\r\n return -1;\r\n };\r\n}\r\n\r\n/*\r\n IE Doesn't have a .startsWith either?\r\n*/\r\nif (!String.prototype.startsWith) {\r\n String.prototype.startsWith = function (str) {\r\n return this.lastIndexOf(str, 0) === 0;\r\n };\r\n}\r\n\r\n// IE < 9 doesn't have a trim() for strings\r\nif (!String.prototype.trim) {\r\n String.prototype.trim = function () {\r\n return this.replace(/^\\s+|\\s+$/g, '');\r\n };\r\n}","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge', [\r\n 'ui.bootstrap',\r\n 'kendo.directives',\r\n 'ngDialog',\r\n 'ui.utils.masks',\r\n 'smoothScroll',\r\n 'ui.router',\r\n 'ngResource',\r\n 'ngFlash',\r\n 'ODataResources',\r\n 'angular-jwt',\r\n 'bunge.modules',\r\n 'bunge.system',\r\n 'bunge.components',\r\n 'ui.router.tabs',\r\n 'angularSpinner',\r\n 'oc.lazyLoad',\r\n ]);\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge')\r\n .config(['$stateProvider', '$urlRouterProvider', '$locationProvider', '$httpProvider', '$resourceProvider', '$injector', 'FlashProvider', '$ocLazyLoadProvider', ConfigBunge]);\r\n\r\n function ConfigBunge($stateProvider, $urlRouterProvider, $locationProvider, $httpProvider, $resourceProvider, $injector, FlashProvider, $ocLazyLoadProvider) {\r\n $locationProvider.html5Mode({\r\n enabled: true,\r\n requireBase: false\r\n });\r\n $locationProvider.hashPrefix = '!';\r\n\r\n $httpProvider.interceptors.push(\"AuthenticationInterceptor\");\r\n $urlRouterProvider.otherwise(function ($injector) {\r\n var $state = $injector.get('$state');\r\n var $rootScope = $injector.get('$rootScope');\r\n var ModulesLoaded = $injector.get('ModulesLoaded');\r\n\r\n var $dynamic = $injector.get('DynamicModulesLoader');\r\n var TokenManagerFactory = $injector.get('TokenManagerFactory');\r\n\r\n var SessionManagerFactory = $injector.get('SessionManagerFactory');\r\n var $location = $injector.get('$location');\r\n var dest = $location.$$url.split('?')[0].split(\"/\")[1];\r\n if (dest != \"administracao\" && dest != \"fornecedor\") {\r\n $state.go('home');\r\n return;\r\n }\r\n return TokenManagerFactory.GetToken().then(function (token) {\r\n if (!$rootScope.currentUser && token) {\r\n SessionManagerFactory.CreateSession(token);\r\n }\r\n\r\n $dynamic.LoadModulesFromToken(dest).then(function () {\r\n var found = false\r\n $state.get().forEach(function (state) {\r\n if ((\".\" + state.name).indexOf($location.$$url.split('?')[0].split(\"/\").join(\".\")) == 0 && state.name != \"\") {\r\n $state.go(state.name);\r\n found = true;\r\n }\r\n });\r\n\r\n if (!found) {\r\n $state.go('home');\r\n }\r\n\r\n });\r\n });\r\n });\r\n\r\n $resourceProvider.defaults.stripTrailingSlashes = false;\r\n kendo.culture(\"pt-BR\");\r\n \r\n kendo.ui.Menu.fn._mouseleave = function () { };\r\n\r\n FlashProvider.setTemplate('
' +\r\n '
' +\r\n '× ' +\r\n 'Close ' +\r\n '
' +\r\n ' ' +\r\n '
');\r\n }\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge')\r\n .run(['$rootScope', '$state', '$window', 'TokenManagerFactory', 'AUTH_EVENTS', 'SessionManagerFactory', 'AuthenticationService', 'Flash', 'Session', 'ViewService', 'PORTAL_PUBLIC_KEYS', 'DynamicModulesLoader', ConfigBunge]);\r\n\r\n var verificarPaginaRestrita = function (nomeState) {\r\n return ['login', 'esqueci-minha-senha', 'esqueci-minha-senha-chave', 'primeiro-acesso', 'primeiro-acesso-chave'].indexOf(nomeState) === -1;\r\n }\r\n\r\n function ConfigBunge($rootScope, $state, $window, TokenManagerFactory, AUTH_EVENTS, SessionManagerFactory, AuthenticationService, Flash, Session, ViewService, PORTAL_PUBLIC_KEYS, DynamicModulesLoader) {\r\n $rootScope.$on('$stateChangeSuccess', function (event, next, current) {\r\n $rootScope.funcAtual = ViewService.GetCurrentAppFunc();\r\n\r\n if ($state.current.name.indexOf('administracao') > -1 || $state.current.name.indexOf('fornecedor') > -1) {\r\n var currentPortal = $state.current.name.indexOf(\"administracao\") > -1 ? \"administracao\" : \"fornecedor\";\r\n var portal = Session.GetFirstPortalByKey(PORTAL_PUBLIC_KEYS[currentPortal]);\r\n var app = Session.GetFirstAppByName(currentPortal);\r\n if (app) {\r\n document.title = \"PortalBBR Bunge Brasil - \" + portal.NmApp + \" - \" + app.descriptionApp;\r\n } else if (portal) {\r\n document.title = \"PortalBBR Bunge Brasil - \" + portal.NmApp;\r\n }\r\n } else {\r\n document.title = \"PortalBBR Bunge Brasil\";\r\n }\r\n Flash.clear();\r\n });\r\n $rootScope.$on('$locationChangeSuccess', function (event, next, current) {\r\n TokenManagerFactory.GetToken().then(function (token) {\r\n var current = $rootScope.currentState ? $rootScope.currentState.name : $state.current.name;\r\n var restrictedPage = verificarPaginaRestrita(current);\r\n if (restrictedPage && !token) {\r\n $rootScope.$broadcast(AUTH_EVENTS.notAuthenticated);\r\n event.preventDefault();\r\n $state.go('login');\r\n }\r\n });\r\n });\r\n $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {\r\n if (!$rootScope.currentState || ($rootScope.currentState && toState.name != $rootScope.currentState.name)) {\r\n event.preventDefault()\r\n\r\n TokenManagerFactory.GetToken().then(function (token) {\r\n if (!$rootScope.currentUser && token) {\r\n SessionManagerFactory.CreateSession(token);\r\n }\r\n\r\n $rootScope.currentState = toState;\r\n var current = $rootScope.currentState ? $rootScope.currentState.name : $state.current.name;\r\n var restrictedPage = verificarPaginaRestrita(current);\r\n if (restrictedPage && !token) {\r\n $rootScope.$broadcast(AUTH_EVENTS.notAuthenticated);\r\n $rootScope.currentState = fromState;\r\n $state.go('login');\r\n return;\r\n }\r\n if ($rootScope.currentUser && $rootScope.currentUser.userStatus.toLowerCase() == 'expired' && current != 'configuracoes.alterar-senha') {\r\n $rootScope.currentState = fromState;\r\n $state.go('configuracoes.alterar-senha');\r\n return;\r\n }\r\n if (!restrictedPage && token) {\r\n if (!($rootScope.currentUser.userStatus.toLowerCase() == 'expired' && current == 'configuracoes.alterar-senha')) {\r\n $rootScope.currentState = fromState;\r\n $state.go('home');\r\n return;\r\n }\r\n }\r\n $state.go(toState, toParams);\r\n });\r\n }\r\n });\r\n $rootScope.$on('REFRESH_TOKEN', function () {\r\n AuthenticationService.RenewToken();\r\n });\r\n $rootScope.$on('LOGOUT', function () {\r\n var current = $rootScope.currentState ? $rootScope.currentState.name : $state.current.name;\r\n var restrictedPage = verificarPaginaRestrita(current);\r\n if (restrictedPage) {\r\n AuthenticationService.ClearCredentials(true);\r\n }\r\n });\r\n }\r\n})();\r\n","(function () {\r\n\r\n\t'use strict';\r\n\r\n\tangular.module('bunge.modules.alterar-email', []);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.alterar-email')\r\n .config(['$stateProvider',ConfigAlterarEmail]);\r\n\r\n function ConfigAlterarEmail($stateProvider) {\r\n $stateProvider\r\n .state('configuracoes.alterar-email', {\r\n url: '/alterar-email',\r\n templateUrl: 'app/modules/alterar-email/view/alterar-email.view.html',\r\n controller: 'AlterarEmailController',\r\n controllerAs: 'vm'\r\n })\r\n }\r\n})();\r\n","(function () {\r\n\r\n\t'use strict';\r\n\r\n\tangular.module('bunge.modules.alterar-senha', []);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.alterar-senha')\r\n .config(['$stateProvider',ConfigAlterarSenha]);\r\n\r\n function ConfigAlterarSenha($stateProvider) {\r\n $stateProvider\r\n .state('configuracoes.alterar-senha', {\r\n url: '/alterar-senha',\r\n templateUrl: 'app/modules/alterar-senha/view/alterar-senha.view.html',\r\n controller: 'AlterarSenhaController',\r\n controllerAs: 'vm'\r\n })\r\n }\r\n})();\r\n","(function () {\r\n\r\n\t'use strict';\r\n\r\n\tangular.module('bunge.modules.configuracoes', ['bunge.modules.alterar-senha', 'bunge.modules.alterar-email']);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.configuracoes')\r\n .config(['$stateProvider', Config]);\r\n\r\n function Config($stateProvider) {\r\n $stateProvider\r\n .state('configuracoes', {\r\n abstract: true,\r\n url: '/configuracoes',\r\n templateUrl: 'app/modules/configuracoes/view/configuracoes.view.html',\r\n controller: 'ConfiguracoesController',\r\n controllerAs: 'conf'\r\n })\r\n }\r\n})();\r\n","(function () {\r\n\r\n\t'use strict';\r\n\r\n\tangular.module('bunge.modules.home', []);\r\n})();","(function () {\r\n 'use strict';\r\n \r\nangular.module('bunge.modules.home')\r\n .config(['$stateProvider',ConfigHome]);\r\n\r\nfunction ConfigHome($stateProvider) {\r\n $stateProvider\r\n .state('home', {\r\n url: '/home',\r\n templateUrl: 'app/modules/home/view/home.view.html',\r\n controller: 'HomeController',\r\n controllerAs: 'vm'\r\n })\r\n}\r\n})();\r\n","(function () {\r\n\t\r\n\t 'use strict';\r\n\t \r\nangular.module('bunge.modules.login', []);\r\n})();","(function () {\r\n 'use strict';\r\n \r\nangular.module('bunge.modules.login')\r\n .config(['$stateProvider',ConfigLogin]);\r\n\r\nfunction ConfigLogin($stateProvider) {\r\n $stateProvider \r\n .state('login', {\r\n url: '/login',\r\n templateUrl: 'app/modules/login/view/login.view.html',\r\n controller: 'LoginController',\r\n controllerAs: 'vm'\r\n })\r\n}\r\n})();\r\n","(function () {\r\n\t\r\n\t 'use strict';\r\n\t \r\nangular.module('bunge.modules.main', []);\r\n})();","(function () {\r\n\t\r\n\t 'use strict';\r\n\t \r\nangular.module('bunge.modules.primeiro-acesso', []);\r\n})();","(function () {\r\n 'use strict';\r\n \r\nangular.module('bunge.modules.primeiro-acesso')\r\n .config(['$stateProvider',ConfigPrimeiroAcesso]);\r\n\r\nfunction ConfigPrimeiroAcesso($stateProvider) {\r\n $stateProvider\r\n .state('primeiro-acesso', {\r\n url: '/primeiro-acesso',\r\n templateUrl: 'app/modules/primeiro-acesso/view/primeiro-acesso.view.html',\r\n controller: 'PrimeiroAcessoController',\r\n controllerAs: 'vm'\r\n })\r\n .state('primeiro-acesso-chave', {\r\n url: '/primeiro-acesso/:chave',\r\n templateUrl: 'app/modules/primeiro-acesso/view/primeiro-acesso.view.html',\r\n controller: 'PrimeiroAcessoController',\r\n controllerAs: 'vm'\r\n })\r\n}\r\n})();\r\n","(function () {\r\n\t\r\n\t 'use strict';\r\n\t \r\nangular.module('bunge.modules.recuperar-acesso', []);\r\n})();","(function () {\r\n 'use strict';\r\n \r\nangular.module('bunge.modules.recuperar-acesso')\r\n .config(['$stateProvider',ConfigRecuperarAcesso]);\r\n\r\nfunction ConfigRecuperarAcesso($stateProvider) {\r\n $stateProvider\r\n .state('esqueci-minha-senha', {\r\n url: '/esqueci-minha-senha',\r\n templateUrl: 'app/modules/recuperar-acesso/views/recuperar-acesso.view.html',\r\n controller: 'RecuperarSenhaController',\r\n controllerAs: 'vm'\r\n })\r\n .state('esqueci-minha-senha-chave', {\r\n url: '/esqueci-minha-senha/:chave',\r\n templateUrl: 'app/modules/recuperar-acesso/views/recuperar-acesso.view.html',\r\n controller: 'RecuperarSenhaController',\r\n controllerAs: 'vm'\r\n })\r\n}\r\n})();\r\n","(function() {\r\n\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor', []);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor')\r\n .config(['$stateProvider', ConfigFornecedor]);\r\n\r\n function ConfigFornecedor($stateProvider) {\r\n $stateProvider\r\n .state('fornecedor', {\r\n url: '/fornecedor',\r\n templateUrl: 'app/modules/fornecedor/view/fornecedor.view.html',\r\n controller: 'FornecedorController',\r\n controllerAs: 'vm',\r\n resolve: { // Any property in resolve should return a promise and is executed before the view is loaded\r\n depsForn: ['DynamicModulesLoader', '$rootScope', 'ModulesLoaded', function (DynamicModulesLoader, $rootScope, ModulesLoaded) {\r\n // you can lazy load files for an existing module\r\n if (ModulesLoaded.GetLoaded()['fornecedor']) {\r\n return;\r\n }\r\n return DynamicModulesLoader.LoadModulesFromToken('fornecedor');\r\n\r\n }]\r\n }\r\n })\r\n }\r\n})();\r\n","if (window.location.pathname !== '/') {\r\n window.location.href = '/#' + window.location.pathname;\r\n}\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.modules.alterar-email')\r\n .controller('AlterarEmailController', AlterarEmailController);\r\n\r\n AlterarEmailController.$inject = ['$rootScope', 'Flash', 'NewEmailService', '$scope','$state'];\r\n function AlterarEmailController($rootScope, Flash, NewEmailService, $scope, $state) {\r\n var vm = this;\r\n\r\n vm.init = function () {\r\n if ($rootScope.currentUser.userType == 2) {\r\n $state.go('home');\r\n }\r\n \r\n // Recupera o e-mail do usuário autenticado.\r\n NewEmailService.RecuperarEmail($rootScope.currentUser.userName).then(function(result){\r\n vm.email = result.email;\r\n });\r\n };\r\n \r\n vm.init();\r\n vm.salvar = function (form) {\r\n var req = {\r\n Login: $rootScope.currentUser.userName,\r\n Email: vm.email,\r\n Senha: vm.password,\r\n ConfirmSenha: vm.confirmPassword\r\n };\r\n NewEmailService.Alterar(req).then(function (result) {\r\n vm.limpar(form);\r\n Flash.create('success', \"Atualizado com sucesso!\", 5000);\r\n }, function (result) {\r\n vm.limpar(form);\r\n Flash.create('danger', \"Não foi possível realizar alteração. Verifique suas credenciais.\", 5000);\r\n });\r\n };\r\n\r\n vm.limpar = function (form) {\r\n vm.password = '';\r\n vm.confirmPassword = '';\r\n form.$setPristine();\r\n };\r\n }\r\n})();","(function () {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.modules.alterar-email')\r\n .service('NewEmailService', NewEmailService);\r\n\r\n NewEmailService.$inject = ['ENDPOINT_URI', '$resource'];\r\n function NewEmailService(ENDPOINT_URI, $resource) {\r\n\r\n var basePath = 'fornecedor';\r\n\r\n var Program = $resource(ENDPOINT_URI.endpoint_backendReq + basePath, {}, {\r\n \r\n alterarEmail: {\r\n \r\n url: ENDPOINT_URI.endpoint_backendReq + 'fornecedor/alterar-email',\r\n method: 'PUT'\r\n },\r\n recuperarEmail: {\r\n url: ENDPOINT_URI.endpoint_backendReq + 'fornecedor/recuperar-email/:codigoSts',\r\n method: 'GET',\r\n transformResponse: function (data) { \r\n return { email: angular.fromJson(data)}; \r\n },\r\n params: {\r\n codigoSts: '@codigoSts'\r\n }\r\n },\r\n });\r\n \r\n function RecuperarEmail(data)\r\n {\r\n var program = new Program();\r\n return program.$recuperarEmail({codigoSts : data });\r\n }\r\n\r\n function Alterar(data) {\r\n var program = new Program();\r\n program.Login = data.Login;\r\n program.Email = data.Email;\r\n program.Senha = data.Senha;\r\n program.ConfimacaoSenha = data.ConfirmSenha;\r\n return program.$alterarEmail();\r\n }\r\n\r\n return {\r\n Alterar: Alterar,\r\n RecuperarEmail: RecuperarEmail\r\n };\r\n }\r\n})();","if (window.location.pathname !== '/') {\r\n window.location.href = '/#' + window.location.pathname;\r\n}\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.modules.alterar-senha')\r\n .controller('AlterarSenhaController', AlterarSenhaController);\r\n\r\n AlterarSenhaController.$inject = ['$rootScope', 'Flash', 'ResetPasswordService', '$scope', '$state', 'ViewService'];\r\n function AlterarSenhaController($rootScope, Flash, ResetPasswordService, $scope, $state, ViewService) {\r\n var vm = this;\r\n\r\n\r\n $rootScope.currentApp = ViewService.GetViewPublicKey('administracao');\r\n\r\n vm.init = function () {\r\n if ($rootScope.currentUser.userType == 2) {\r\n $state.go('home');\r\n }\r\n };\r\n vm.init();\r\n vm.salvar = function () {\r\n if (!vm.password || !vm.newPassword || !vm.confirmPassword) {\r\n var id = Flash.create('danger', \"Todos os campos são obrigatórios.\", 8000);\r\n return;\r\n }\r\n\r\n if ((vm.newPassword != vm.confirmPassword)) {\r\n var id = Flash.create('danger', \"O campo senha e confirmação de senha devem ser iguais.\", 8000);\r\n return;\r\n }\r\n\r\n if (vm.newPassword.length < 6) {\r\n var id = Flash.create('danger', \"A senha deve ter mais que 6 caracteres.\", 8000);\r\n vm.confirmPassword = '';\r\n vm.newPassword = '';\r\n return;\r\n }\r\n\r\n var res1 = new RegExp(\"[A-Z]\").test(vm.newPassword);\r\n var res2 = new RegExp(\"[a-z]\").test(vm.newPassword);\r\n var res3 = new RegExp(\"[0-9]\").test(vm.newPassword);\r\n var res4 = new RegExp(\"[^a-zA-Z0-9]\").test(vm.newPassword);\r\n \r\n\r\n if(!(res1&&res2&&res3&&res4)){\r\n var id = Flash.create('danger', \"A senha deve ter mais de 6 caracteres e conter números, caracteres especiais, letras maiúsculas e minúsculas. A senha não pode ser iqual as 3 ultimas senhas.\", 8000); \r\n vm.confirmPassword = '';\r\n vm.newPassword = '';\r\n return; \r\n }\r\n \r\n var req = {\r\n Login: $rootScope.currentUser.userName,\r\n Password: vm.password,\r\n NewPassword: vm.confirmPassword\r\n }\r\n\r\n ResetPasswordService.resetPassword(req).then(function (result) {\r\n $rootScope.$broadcast('REFRESH_TOKEN');\r\n vm.limpar();\r\n var id = Flash.create('success', \"Atualizado com sucesso!\", 5000);\r\n }, function (result) {\r\n \r\n if(result.status===417){\r\n var id = Flash.create('danger', \"Senha atual incorreta\", 5000);\r\n vm.password = '';\r\n }else if(result.status===404){\r\n var id = Flash.create('danger', \"A senha deve ter mais de 6 caracteres e conter números, caracteres especiais, letras maiúsculas e minúsculas. A senha não pode ser iqual as 3 ultimas senhas.\", 8000);\r\n vm.confirmPassword = '';\r\n vm.newPassword = '';\r\n }\r\n else{\r\n var id = Flash.create('danger', \"Falha ao realizar alterações.\", 5000);\r\n }\r\n });\r\n };\r\n\r\n vm.limpar = function () {\r\n vm.password = '';\r\n vm.newPassword = '';\r\n vm.confirmPassword = '';\r\n vm.form.$setPristine();\r\n }\r\n }\r\n})();","(function () {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.modules.alterar-senha')\r\n .service('ResetPasswordService', ResetPasswordService);\r\n\r\n ResetPasswordService.$inject = ['ENDPOINT_URI', '$resource'];\r\n function ResetPasswordService(ENDPOINT_URI, $resource) {\r\n\r\n var Resource = $resource(ENDPOINT_URI.endpoint_sts + 'reset-password', {}, {\r\n resetPassword: {\r\n url: ENDPOINT_URI.endpoint_sts + 'reset-password',\r\n method: 'PUT'\r\n }\r\n });\r\n\r\n function resetPassword(data) {\r\n var resource = new Resource();\r\n resource.Login = data.Login;\r\n resource.Password = data.Password;\r\n resource.NewPassword = data.NewPassword;\r\n return resource.$resetPassword();\r\n }\r\n\r\n return {\r\n resetPassword: resetPassword\r\n };\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.modules.configuracoes')\r\n .controller('ConfiguracoesController', ConfiguracoesController);\r\n\r\n ConfiguracoesController.$inject = ['$state'];\r\n function ConfiguracoesController($state) {\r\n var vm = this;\r\n vm.active = active;\r\n\r\n vm.menuItens = [{\r\n route: 'configuracoes.alterar-senha',\r\n legenda: 'ALTERAR MINHA SENHA'\r\n },{\r\n route: 'configuracoes.alterar-email',\r\n legenda: 'ALTERAR MEU E-MAIL'\r\n }];\r\n\r\n\r\n function active(item) {\r\n return $state.current.name == item.route;\r\n }\r\n }\r\n})();","if (window.location.pathname !== '/') {\r\n window.location.href = '/#' + window.location.pathname;\r\n}\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.home').controller('HomeController', HomeController);\r\n\r\n HomeController.$inject = ['$rootScope', 'AuthenticationService', 'NavigationService', 'ViewService'];\r\n function HomeController($rootScope, AuthenticationService, NavigationService, ViewService) {\r\n var vm = this;\r\n\r\n $rootScope.currentApp = ViewService.GetViewPublicKey('administracao');\r\n\r\n vm.logoff = function () {\r\n AuthenticationService.ClearCredentials();\r\n };\r\n \r\n function initController() {\r\n if($rootScope.navPermissions.length == 0)\r\n NavigationService.BuildUserMenu();\r\n\r\n var navPerm = [];\r\n angular.forEach($rootScope.navPermissions, function (value, key) {\r\n if (!value.dontShowHome) {\r\n navPerm.push(value);\r\n }\r\n });\r\n vm.navPermissions = navPerm;\r\n }\r\n\r\n initController();\r\n }\r\n})();","if (window.location.pathname !== '/') {\r\n window.location.href = '/#' + window.location.pathname;\r\n}\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.modules.login')\r\n .controller('LoginController', LoginController);\r\n\r\n LoginController.$inject = ['$state', 'AuthenticationService', 'TokenManagerFactory', 'ENDPOINT_URI', '$http'];\r\n function LoginController($state, AuthenticationService, TokenManagerFactory, ENDPOINT_URI, $http) {\r\n var vm = this;\r\n\r\n (function initController() {\r\n $http.get(ENDPOINT_URI.endpoint_sts + 'cookie');\r\n return TokenManagerFactory.GetToken().then(function (token) {\r\n if (token) {\r\n window.location.href = $state.href('home');\r\n } else {\r\n AuthenticationService.ClearCredentials();\r\n }\r\n });\r\n })();\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge')\r\n .controller('MainController', MainController);\r\n\r\n MainController.$inject = ['$rootScope', 'SessionManagerFactory', 'USER_ROLES','$http', 'ENDPOINT_URI'];\r\n function MainController($rootScope, SessionManagerFactory, USER_ROLES, $http, ENDPOINT_URI) {\r\n \r\n $rootScope.currentUser = null;\r\n $rootScope.userRoles = USER_ROLES;\r\n $rootScope.navPermissions = [];\r\n $rootScope.isAuthorized = SessionManagerFactory.isAuthorized;\r\n\r\n $rootScope.setCurrentUser = function (user) {\r\n $rootScope.currentUser = user;\r\n };\r\n\r\n //\r\n // Este método terá de ficar aqui, já que por algum motivo arquitetural, não está sendo possível\r\n // injetar determinados services dentro desta e de oturas controllers.\r\n $rootScope.registerAccess = function(event, appName){\r\n if(typeof appName != 'undefined'){\r\n var model = null;\r\n var userID = $rootScope.currentUser.userId; \r\n var navigation = $rootScope.navPermissions;\r\n\r\n event.preventDefault();\r\n\r\n function _redirect(){\r\n window.location.href = event.currentTarget.href;\r\n }\r\n\r\n for(var navIndex in navigation){\r\n var navItem = navigation[navIndex];\r\n\r\n if(navItem.appName == appName) \r\n model = {publicKeyPortal: navItem.publicKey, idUser: userID};\r\n }\r\n\r\n\r\n if(!!model) {\r\n $http.post(ENDPOINT_URI.endpoint_sts + 'access-log-register', model).then(_redirect, _redirect); \r\n } \r\n else {\r\n _redirect();\r\n } \r\n }\r\n }\r\n }\r\n})();","if (window.location.pathname !== '/') {\r\n window.location.href = '/#' + window.location.pathname;\r\n}\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.modules.primeiro-acesso')\r\n .controller('PrimeiroAcessoController', PrimeiroAcessoController);\r\n\r\n PrimeiroAcessoController.$inject = ['$state', 'PrimeiroAcessoService', 'Flash', '$stateParams']\r\n function PrimeiroAcessoController($state, PrimeiroAcessoService, Flash, $stateParams) {\r\n var vm = this;\r\n\r\n (function initController() {\r\n vm.tipo = 1;\r\n vm.showForm = true;\r\n vm.chave = $stateParams.chave;\r\n if (vm.chave) {\r\n PrimeiroAcessoService.VerificarChave({ chave: vm.chave }).then(function (result) {\r\n if (result !== \"ok\") {\r\n vm.erro = {};\r\n vm.erro.mensagem = result;\r\n }\r\n });\r\n }\r\n })();\r\n\r\n vm.novoTipo = function (value) {\r\n vm.cpf = undefined;\r\n vm.cnpj = undefined;\r\n };\r\n\r\n vm.recuperar = function () {\r\n vm.dataLoading = true;\r\n if (vm.cpf) {\r\n var user = {\r\n NumeroDocumento: vm.cpf\r\n };\r\n } else if (vm.cnpj) {\r\n var user = {\r\n NumeroDocumento: vm.cnpj\r\n };\r\n }\r\n\r\n PrimeiroAcessoService.Requisitar(user).then(function (result) {\r\n Flash.clear();\r\n if (result === \"ok\") {\r\n vm.dataLoading = false;\r\n vm.showForm = false;\r\n } else {\r\n var message = 'A solicitação não pode ser realizada! ' + result;\r\n var id = Flash.create('danger', message, 10000);\r\n vm.dataLoading = false;\r\n }\r\n }, function () {\r\n Flash.clear();\r\n var message = 'A solicitação não pode ser realizada!';\r\n var id = Flash.create('danger', message, 10000);\r\n vm.dataLoading = false;\r\n });\r\n };\r\n\r\n vm.executar = function () {\r\n Flash.clear();\r\n if (!vm.password || !vm.passwordConfirmacao) {\r\n var id = Flash.create('danger', \"Todos os campos são obrigatórios.\", 8000);\r\n return;\r\n }\r\n\r\n if ((vm.password != vm.passwordConfirmacao)) {\r\n var id = Flash.create('danger', \"Senha e Confirmar a nova senha devem ser iguais.\", 8000);\r\n return;\r\n }\r\n\r\n if (vm.password.length < 6) {\r\n var id = Flash.create('danger', \"A senha deve ter mais que 6 caracteres.\", 8000);\r\n vm.password = '';\r\n vm.passwordConfirmacao = '';\r\n return;\r\n }\r\n\r\n var res1 = new RegExp(\"[A-Z]\").test(vm.password);\r\n var res2 = new RegExp(\"[a-z]\").test(vm.password);\r\n var res3 = new RegExp(\"[0-9]\").test(vm.password);\r\n var res4 = new RegExp(\"[^a-zA-Z0-9]\").test(vm.password);\r\n\r\n\r\n if (!(res1 && res2 && res3 && res4)) {\r\n var id = Flash.create('danger', \"A senha deve ter mais de 6 caracteres e conter números, caracteres especiais, letras maiúsculas e minúsculas. A senha não pode ser iqual as 3 ultimas senhas.\", 8000);\r\n vm.passwordConfirmacao = '';\r\n vm.password = '';\r\n return;\r\n }\r\n\r\n vm.dataLoading = true;\r\n var user = {\r\n Chave: vm.chave,\r\n Senha: vm.password,\r\n ConfirmacaoSenha: vm.passwordConfirmacao\r\n }\r\n\r\n PrimeiroAcessoService.Executar(user).then(function (result) {\r\n Flash.clear();\r\n if (result === \"ok\") {\r\n vm.dataLoading = false;\r\n vm.showForm = false;\r\n } else {\r\n var message = 'A solicitação não pode ser realizada! ' + result;\r\n var id = Flash.create('danger', message, 10000);\r\n vm.dataLoading = false;\r\n }\r\n }, function () {\r\n var message = 'A solicitação não pode ser realizada!';\r\n var id = Flash.create('danger', message, 10000);\r\n vm.dataLoading = false;\r\n });\r\n };\r\n }\r\n\r\n})();","(function () {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.modules.primeiro-acesso')\r\n .service('PrimeiroAcessoService', PrimeiroAcessoService);\r\n\r\n PrimeiroAcessoService.$inject = ['ENDPOINT_URI', '$resource'];\r\n function PrimeiroAcessoService(ENDPOINT_URI, $resource) {\r\n\r\n var Program = $resource(ENDPOINT_URI.endpoint_backendReq + 'pedido', {}, {\r\n criarPedido: {\r\n url: ENDPOINT_URI.endpoint_backendReq + 'pedido',\r\n method: 'POST',\r\n },\r\n executarPedido: {\r\n url: ENDPOINT_URI.endpoint_backendReq + 'pedido/executar-pedido',\r\n method: 'PUT',\r\n },\r\n verificarChave: {\r\n url: ENDPOINT_URI.endpoint_backendReq + 'pedido/obter-pedido/:tipoPedido/:chave',\r\n method: 'GET',\r\n params: {\r\n chave: '@chave',\r\n tipoPedido: '@tipoPedido'\r\n }\r\n }\r\n });\r\n\r\n function Requisitar(user) {\r\n var program = new Program();\r\n program.TipoRegistro = 1;\r\n program.NumeroDocumento = user.NumeroDocumento;\r\n return program.$criarPedido().then(function (res) {\r\n return \"ok\";\r\n }, function (res) {\r\n if (res.data.innerException.exceptionMessage) {\r\n return res.data.innerException.exceptionMessage;\r\n } else {\r\n return \"\";\r\n }\r\n });\r\n }\r\n\r\n function Executar(user) {\r\n var program = new Program();\r\n program.Chave = user.Chave;\r\n program.Senha = user.Senha;\r\n program.ConfirmacaoSenha = user.ConfirmacaoSenha;\r\n return program.$executarPedido().then(function (res) {\r\n return \"ok\";\r\n }, function (res) {\r\n if (res.data.innerException.exceptionMessage) {\r\n return res.data.innerException.exceptionMessage;\r\n } else {\r\n return \"\";\r\n }\r\n });\r\n }\r\n\r\n function VerificarChave(user) {\r\n var program = new Program();\r\n return program.$verificarChave({ chave: user.chave, tipoPedido: 1 }).then(function (res) {\r\n return \"ok\";\r\n }, function (res) {\r\n return res.data;\r\n });\r\n }\r\n\r\n return {\r\n Requisitar: Requisitar,\r\n Executar: Executar,\r\n VerificarChave: VerificarChave\r\n };\r\n }\r\n})();","if (window.location.pathname !== '/') {\r\n window.location.href = '/#' + window.location.pathname;\r\n}\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.modules.recuperar-acesso')\r\n .controller('RecuperarSenhaController', RecuperarSenhaController);\r\n\r\n RecuperarSenhaController.$inject = ['$state', 'NewPasswordService', 'Flash', '$stateParams']\r\n function RecuperarSenhaController($state, NewPasswordService, Flash, $stateParams) {\r\n var vm = this;\r\n\r\n (function initController() {\r\n vm.showForm = true;\r\n vm.chave = $stateParams.chave;\r\n vm.tipo = 1;\r\n vm.showForm = true;\r\n vm.chave = $stateParams.chave;\r\n if (vm.chave) {\r\n NewPasswordService.VerificarChave({ chave: vm.chave }).then(function (result) {\r\n if (result !== \"ok\") {\r\n vm.erro = {};\r\n vm.erro.mensagem = result;\r\n }\r\n });\r\n }\r\n })();\r\n\r\n vm.novoTipo = function (value) {\r\n vm.cpf = undefined;\r\n vm.cnpj = undefined;\r\n };\r\n\r\n vm.recuperar = function () {\r\n vm.dataLoading = true;\r\n if (vm.cpf) {\r\n var user = {\r\n NumeroDocumento: vm.cpf \r\n };\r\n } else if (vm.cnpj) {\r\n var user = {\r\n NumeroDocumento: vm.cnpj\r\n };\r\n }\r\n\r\n var newPassword = NewPasswordService.Reset(user);\r\n newPassword.then(function (result) {\r\n Flash.clear();\r\n if (result === \"ok\") { \r\n vm.dataLoading = false;\r\n vm.showForm = false; \r\n } else {\r\n var message = 'A solicitação não pode ser realizada! '+ result ;\r\n var id = Flash.create('danger', message, 10000);\r\n vm.dataLoading = false; \r\n }\r\n }, function () {\r\n var message = 'A solicitação não pode ser realizada!';\r\n var id = Flash.create('danger', message, 10000);\r\n vm.dataLoading = false;\r\n });\r\n };\r\n\r\n vm.executar = function () {\r\n if (!vm.password || !vm.passwordConfirmacao) {\r\n var id = Flash.create('danger', \"Todos os campos são obrigatórios.\", 8000);\r\n return;\r\n }\r\n\r\n if ((vm.password != vm.passwordConfirmacao)) {\r\n var id = Flash.create('danger', \"Senha e Confirmar a nova senha devem ser iguais.\", 8000);\r\n return;\r\n }\r\n\r\n if (vm.password.length < 6) {\r\n var id = Flash.create('danger', \"A senha deve ter mais que 6 caracteres.\", 8000);\r\n vm.password = '';\r\n vm.passwordConfirmacao = '';\r\n return;\r\n }\r\n\r\n var res1 = new RegExp(\"[A-Z]\").test(vm.password);\r\n var res2 = new RegExp(\"[a-z]\").test(vm.password);\r\n var res3 = new RegExp(\"[0-9]\").test(vm.password);\r\n var res4 = new RegExp(\"[^a-zA-Z0-9]\").test(vm.password);\r\n\r\n if (!(res1 && res2 && res3 && res4)) {\r\n var id = Flash.create('danger', \"A senha deve ter mais de 6 caracteres e conter números, caracteres especiais, letras maiúsculas e minúsculas. A senha não pode ser iqual as 3 ultimas senhas.\", 8000);\r\n vm.passwordConfirmacao = '';\r\n vm.password = '';\r\n return;\r\n }\r\n\r\n vm.dataLoading = true;\r\n var user = {\r\n Chave: vm.chave,\r\n Senha: vm.password,\r\n ConfirmacaoSenha: vm.passwordConfirmacao\r\n }\r\n\r\n NewPasswordService.Executar(user).then(function (result) {\r\n Flash.clear();\r\n if (result === \"ok\") {\r\n vm.dataLoading = false;\r\n vm.showForm = false;\r\n } else {\r\n var message = 'A solicitação não pode ser realizada! ' + result;\r\n var id = Flash.create('danger', message, 10000);\r\n vm.dataLoading = false;\r\n }\r\n }, function () {\r\n var message = 'A solicitação não pode ser realizada!';\r\n var id = Flash.create('danger', message, 10000);\r\n vm.dataLoading = false;\r\n });\r\n };\r\n\r\n //vm.dataLoading = false;\r\n //vm.showForm = false;\r\n }\r\n\r\n})();","(function () {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.modules.recuperar-acesso')\r\n .service('NewPasswordService', NewPasswordService);\r\n\r\n NewPasswordService.$inject = ['ENDPOINT_URI', '$resource'];\r\n function NewPasswordService(ENDPOINT_URI, $resource) {\r\n\r\n var Program = $resource(ENDPOINT_URI.endpoint_backendReq + 'pedido', {}, {\r\n criarPedido: {\r\n url: ENDPOINT_URI.endpoint_backendReq + 'pedido',\r\n method: 'POST',\r\n },\r\n executarPedido: {\r\n url: ENDPOINT_URI.endpoint_backendReq + 'pedido/executar-pedido',\r\n method: 'PUT',\r\n },\r\n verificarChave: {\r\n url: ENDPOINT_URI.endpoint_backendReq + 'pedido/obter-pedido/:tipoPedido/:chave',\r\n method: 'GET',\r\n params: {\r\n chave: '@chave',\r\n tipoPedido: '@tipoPedido'\r\n }\r\n }\r\n });\r\n\r\n function Reset(user) {\r\n var program = new Program();\r\n program.TipoRegistro = 2;\r\n program.NumeroDocumento = user.NumeroDocumento;\r\n return program.$criarPedido().then(function (res) {\r\n return \"ok\";\r\n }, function (res) {\r\n if (res.data.innerException.exceptionMessage) {\r\n return res.data.innerException.exceptionMessage;\r\n } else {\r\n return \"\";\r\n }\r\n });\r\n }\r\n\r\n function Executar(user) {\r\n var program = new Program();\r\n program.Chave = user.Chave;\r\n program.Senha = user.Senha;\r\n program.ConfirmacaoSenha = user.ConfirmacaoSenha;\r\n return program.$executarPedido().then(function (res) {\r\n return \"ok\";\r\n }, function (res) {\r\n if (res.data.innerException.exceptionMessage) {\r\n return res.data.innerException.exceptionMessage;\r\n } else {\r\n return \"\";\r\n }\r\n });\r\n }\r\n\r\n function VerificarChave(user) {\r\n var program = new Program();\r\n return program.$verificarChave({ chave: user.chave, tipoPedido: 2 }).then(function (res) {\r\n return \"ok\";\r\n }, function (res) {\r\n return res.data;\r\n });\r\n }\r\n\r\n return {\r\n Reset: Reset,\r\n Executar: Executar,\r\n VerificarChave: VerificarChave\r\n };\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor').controller('FornecedorController', FornecedorController);\r\n\r\n FornecedorController.$inject = ['$rootScope', 'NavigationService', 'ViewService', 'VisibilidadeMenuLateralFactory'];\r\n function FornecedorController($rootScope, NavigationService, ViewService, VisibilidadeMenuLateralFactory) {\r\n var vm = this;\r\n\r\n $rootScope.currentApp = ViewService.GetViewPublicKey('fornecedor');\r\n\r\n ViewService.GoToFirstView('fornecedor');\r\n\r\n if ($rootScope.navPermissions.length == 0)\r\n NavigationService.BuildUserMenu();\r\n\r\n vm.sideBarMenuVisivel = sideBarMenuVisivel;\r\n\r\n vm.expandir = expandir;\r\n\r\n function sideBarMenuVisivel() {\r\n return VisibilidadeMenuLateralFactory.getVisivel();\r\n }\r\n\r\n function expandir() {\r\n VisibilidadeMenuLateralFactory.setVisivel(true);\r\n }\r\n }\r\n\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor.adm', [])\r\n .config(['$stateProvider', '$urlRouterProvider', ConfigParametros])\r\n .run([RunParametros]);\r\n\r\n\r\n var $urlRouterProviderRef = null;\r\n var $stateProviderRef = null;\r\n\r\n function ConfigParametros($stateProvider, $urlRouterProvider) {\r\n $urlRouterProviderRef = $urlRouterProvider;\r\n $stateProviderRef = $stateProvider;\r\n }\r\n\r\n function RunParametros() {\r\n $stateProviderRef.state('fornecedor.adm', {\r\n url: '/administracao',\r\n templateUrl: 'app/modules/fornecedor/submodules/administracao/view/administracao.view.html',\r\n controller: 'FornecedorAdministracaoController',\r\n controllerAs: 'vm',\r\n });\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor.conta-corrente', [])\r\n .config(['$stateProvider', '$urlRouterProvider', ConfigParametros])\r\n .run(['$rootScope', '$location', '$state', RunParametros]);\r\n\r\n\r\n var $urlRouterProviderRef = null;\r\n var $stateProviderRef = null;\r\n\r\n function ConfigParametros($stateProvider, $urlRouterProvider) {\r\n $urlRouterProviderRef = $urlRouterProvider;\r\n $stateProviderRef = $stateProvider;\r\n }\r\n\r\n function RunParametros($rootScope, $location, $state) {\r\n $stateProviderRef.state('fornecedor.conta-corrente', {\r\n url: '/conta-corrente',\r\n params: {\r\n posicao: null,\r\n tipoConsulta: null,\r\n codigoFornecedor: null,\r\n codigoNucleo: null,\r\n codigoProduto: null,\r\n anoSafra: null,\r\n contrato: null,\r\n filtros: null,\r\n documentoFornecedor: null,\r\n documentoFazenda: null,\r\n contratosSafra: null\r\n },\r\n templateUrl: 'app/modules/fornecedor/submodules/conta-corrente/view/conta-corrente.view.html',\r\n controller: 'FornecedorContaCorrenteController',\r\n controllerAs: 'vm',\r\n });\r\n\r\n $rootScope.$on('$locationChangeSuccess', function() {\r\n if ($rootScope.previousLocation == $location.path() && $rootScope.filtrosContratos && $rootScope.actualLocation != '/fornecedor/contratos' && $rootScope.previousLocation == $rootScope.actualLocation) {\r\n var filtros = $rootScope.filtrosContratos;\r\n delete $rootScope.filtrosContratos;\r\n $state.go('fornecedor.contratos', {\r\n filtros: filtros\r\n });\r\n }\r\n $rootScope.previousLocation = $rootScope.actualLocation;\r\n $rootScope.actualLocation = $location.path();\r\n });\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor.contratos', [])\r\n .config(['$stateProvider', '$urlRouterProvider', ConfigParametros])\r\n .run([RunParametros]);\r\n\r\n\r\n var $urlRouterProviderRef = null;\r\n var $stateProviderRef = null;\r\n\r\n function ConfigParametros($stateProvider, $urlRouterProvider) {\r\n $urlRouterProviderRef = $urlRouterProvider;\r\n $stateProviderRef = $stateProvider;\r\n }\r\n\r\n function RunParametros() {\r\n $stateProviderRef.state('fornecedor.contratos', {\r\n url: '/contratos',\r\n params: {\r\n filtros: null\r\n },\r\n templateUrl: 'app/modules/fornecedor/submodules/contratos/view/contratos.view.html',\r\n controller: 'FornecedorContratosController',\r\n controllerAs: 'vm',\r\n });\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor.pagamentos', [])\r\n .config(['$stateProvider', '$urlRouterProvider', ConfigParametros])\r\n .run([RunParametros]);\r\n\r\n\r\n var $urlRouterProviderRef = null;\r\n var $stateProviderRef = null;\r\n\r\n function ConfigParametros($stateProvider, $urlRouterProvider) {\r\n $urlRouterProviderRef = $urlRouterProvider;\r\n $stateProviderRef = $stateProvider;\r\n }\r\n\r\n function RunParametros() {\r\n $stateProviderRef.state('fornecedor.pagamentos', {\r\n url: '/pagamentos',\r\n templateUrl: 'app/modules/fornecedor/submodules/pagamentos/view/pagamentos.view.html',\r\n controller: 'FornecedorPagamentosController',\r\n controllerAs: 'vm',\r\n });\r\n }\r\n})();","(function() {\r\n\r\n angular\r\n .module('bunge.modules.fornecedor.adm')\r\n .controller('FornecedorAdministracaoController', FornecedorAdministracaoController);\r\n\r\n FornecedorAdministracaoController.$inject = ['KendoDataSourceFactory', 'FornecedorAdministracaoService', '$scope', 'HelperFactory', 'Flash', '$compile', '$timeout'];\r\n\r\n function FornecedorAdministracaoController(KendoDataSourceFactory, FornecedorAdministracaoService, $scope, HelperFactory, Flash, $compile, $timeout) {\r\n var vm = this;\r\n var gridToolbar = HelperFactory.getAdminGridToolbar('fornecedor', 'administracao');\r\n var gridDeleteButton = HelperFactory.getAdminDeleteButtonTemplate('fornecedor', 'administracao');\r\n\r\n vm.usuariosDataSource = {\r\n filter: \"contains\",\r\n minLength: 3,\r\n dataTextField: 'DescricaoFornecedor',\r\n dataSource: KendoDataSourceFactory.iniciar({\r\n endpoint: 'Fornecedor',\r\n fornecedor: true,\r\n sort: { field: \"CodigoFornecedor\", dir: \"desc\" }\r\n }).$gerarDataSource(),\r\n autoBind: false,\r\n change: comboUserOnChange\r\n };\r\n\r\n function comboUserOnChange() {\r\n limparTabela();\r\n vm.fornecedorSelecionado = this.dataItem(this.select());\r\n $scope.$evalAsync();\r\n }\r\n\r\n function limparTabela() {\r\n if (vm.grid) {\r\n vm.grid.dataSource.data([]);\r\n }\r\n }\r\n\r\n vm.filtrar = function() {\r\n var ds = KendoDataSourceFactory.iniciar({\r\n endpoint: 'RelacaoFornecedor',\r\n fornecedor: true,\r\n pageable: false,\r\n pageSize: 999,\r\n sort: { field: \"DocumentoFornecedorDestino\", dir: \"asc\" }\r\n });\r\n\r\n ds.$adicionarFiltro('CodigoFornecedorOrigem', 'eq', vm.fornecedorSelecionado.CodigoFornecedor);\r\n vm.grid.setDataSource(ds.$gerarDataSource());\r\n };\r\n\r\n vm.limpar = function() {\r\n limparTabela();\r\n limparFornecedor();\r\n };\r\n\r\n function limparFornecedor() {\r\n vm.fornecedorSelecionado = undefined;\r\n vm.fornecedores.value('');\r\n vm.fornecedores.text('');\r\n }\r\n\r\n vm.excluir = function(data) {\r\n var confirmation = HelperFactory.alertaConfirma(\"Você deseja realmente deletar o fornecedor \" + data.DocumentoFornecedorDestino + \" - \" + data.NomeFornecedorDestino + \"?\");\r\n\r\n confirmation.then(function(result) {\r\n if (!!result) {\r\n FornecedorAdministracaoService.removeRelacaoFornecedor(data.CodigoRelacaoFornecedor)\r\n .success(function(data) {\r\n $scope.vm.filtrar();\r\n Flash.create('success', \"Excluído com sucesso!\");\r\n }).error(function(data) {\r\n Flash.create('danger', data.exceptionMessage);\r\n });\r\n }\r\n });\r\n }\r\n\r\n vm.comboBoxFornecedorDataSource = {\r\n dataTextField: 'DescricaoFornecedor',\r\n dataValueField: 'CodigoFornecedor',\r\n change: comboBoxFornecedorOnChange,\r\n filter: \"contains\",\r\n minLength: 3\r\n }\r\n\r\n function comboBoxFornecedorOnChange(evt, selected, data) {\r\n var dataItem = this.dataItem(this.select());\r\n var model = angular.copy(dataItem);\r\n\r\n $scope.vm.novoFornecedorSelecionado = model;\r\n $scope.$evalAsync()\r\n }\r\n\r\n function gridFornecedorEditor(container, options) {\r\n var dataSource = KendoDataSourceFactory\r\n .iniciar({\r\n endpoint: 'Fornecedor',\r\n fornecedor: true,\r\n sort: { field: \"CodigoFornecedor\", dir: \"desc\" }\r\n })\r\n .$adicionarFiltro('CodigoFornecedor', 'ne', $scope.vm.fornecedorSelecionado.CodigoFornecedor)\r\n .$gerarDataSource();\r\n\r\n var element = angular.element('');\r\n element.appendTo(container);\r\n\r\n $compile(angular.element(container).contents())($scope);\r\n $timeout(function() {\r\n $scope.vm.comboNovoFornecedor.setDataSource(dataSource);\r\n $scope.$evalAsync();\r\n }, 100);\r\n }\r\n\r\n function gridSave(data) {\r\n data.preventDefault();\r\n if ($scope.vm.novoFornecedorSelecionado) {\r\n var codigoFornecedorOrigem = $scope.vm.fornecedorSelecionado.CodigoFornecedor;\r\n var codigoFornecedorDestino = $scope.vm.novoFornecedorSelecionado.CodigoFornecedor;\r\n\r\n FornecedorAdministracaoService\r\n .addRelacaoFornecedor(codigoFornecedorOrigem, codigoFornecedorDestino)\r\n .then(function() {\r\n Flash.create('success', \"Salvo com sucesso!\");\r\n $scope.vm.filtrar();\r\n $scope.vm.novoFornecedorSelecionado = undefined;\r\n }, function(data) {\r\n Flash.create('danger', data.data.exceptionMessage);\r\n });\r\n } else {\r\n Flash.create('danger', \"Preencha todos os campos para inclusão.\");\r\n $scope.$evalAsync();\r\n return;\r\n }\r\n }\r\n\r\n vm.paramsGridOptions = function() {\r\n return {\r\n editable: \"inline\",\r\n resizable: true,\r\n filterable: true,\r\n sortable: true,\r\n columnMenu: true,\r\n noRecords: {\r\n template: \"Nenhum item encontrado\"\r\n },\r\n toolbar: gridToolbar,\r\n columns: [{\r\n title: 'Fornecedor',\r\n field: 'DocumentoFornecedorDestino',\r\n template: '#= data.DocumentoFornecedorDestino + \" - \" + data.NomeFornecedorDestino #',\r\n width: \"90%\",\r\n editor: gridFornecedorEditor\r\n }, {\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n width: '10%',\r\n title: \"Ações\",\r\n command: ['edit', { name: 'excluir', template: gridDeleteButton }]\r\n }],\r\n messages: {\r\n commands: {\r\n edit: \" \",\r\n update: \" \",\r\n destroy: \" \",\r\n canceledit: \" \"\r\n }\r\n },\r\n dataBound: function(e) {\r\n e.sender.element.find(\".k-grid-edit\").css(\"display\", \"none\");\r\n },\r\n save: gridSave\r\n }\r\n }\r\n\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor.adm')\r\n .service('FornecedorAdministracaoService', FornecedorAdministracaoService);\r\n\r\n FornecedorAdministracaoService.$inject = ['ENDPOINT_URI', '$http', 'KendoDataSourceFactory'];\r\n\r\n function FornecedorAdministracaoService(ENDPOINT_URI, $http, KendoDataSourceFactory) {\r\n var FornecedorAdministracaoService = function() {\r\n\r\n this.addRelacaoFornecedor = function(codigoFornecedorOrigem, codigoFornecedorDestino) {\r\n return $http.post(ENDPOINT_URI.endpoint_fornecedorReq + 'relacaoFornecedor/adicionar/' + codigoFornecedorOrigem + '/' + codigoFornecedorDestino);\r\n };\r\n\r\n this.removeRelacaoFornecedor = function(codigoRelacaoFornecedor) {\r\n return $http.delete(ENDPOINT_URI.endpoint_fornecedorReq + 'relacaoFornecedor/remover/' + codigoRelacaoFornecedor);\r\n };\r\n\r\n this.getFornecedores = function(fornecedor) {\r\n if (typeof fornecedor == 'undefined' || !fornecedor)\r\n return [];\r\n else {\r\n return KendoDataSourceFactory.iniciar({ endpoint: 'AppOData', pageSize: 30, STS: true })\r\n .$adicionarIdModelo('Id')\r\n .$adicionarFiltro('IdPortal', \"eq\", fornecedor.CodigoFornecedor)\r\n .$adicionarCampoModelo(\"NmApp\", { type: \"string\" })\r\n .$adicionarCampoModelo(\"PublicKey\", { type: \"string\" })\r\n .$adicionarCampoModelo(\"Description\", { type: \"string\" })\r\n .$gerarDataSource();\r\n }\r\n\r\n\r\n }\r\n\r\n };\r\n return new FornecedorAdministracaoService();\r\n }\r\n}());","(function () {\r\n\r\n angular\r\n .module('bunge.modules.fornecedor.conta-corrente')\r\n .controller('FornecedorContaCorrenteController', FornecedorContaCorrenteController);\r\n\r\n FornecedorContaCorrenteController.$inject = ['FOR_CC_TABS_CONSTANT', '$stateParams', '$state', '$timeout', 'KendoDataSourceFactory', '$rootScope'];\r\n\r\n function FornecedorContaCorrenteController(FOR_CC_TABS_CONSTANT, $stateParams, $state, $timeout, KendoDataSourceFactory, $rootScope) {\r\n var vm = this;\r\n vm.tabData = [];\r\n $rootScope.filtrosContratos = $stateParams['filtros'];\r\n if($stateParams['contrato']) {\r\n vm.codigoContrato = $stateParams['contrato'].ContratoCompraMTP\r\n }\r\n vm.getPosicao = function () {\r\n return $stateParams['posicao'];\r\n };\r\n\r\n vm.voltar = function () {\r\n $rootScope.filtrosContratos = undefined;\r\n return $state.go('fornecedor.contratos', {\r\n filtros: $stateParams['filtros']\r\n });\r\n };\r\n\r\n function iniciar() {\r\n if ($stateParams['posicao']) {\r\n if ($stateParams['posicao'] == 1) {\r\n var ds = KendoDataSourceFactory.iniciar({\r\n endpoint: 'Contrato',\r\n fornecedor: true,\r\n pageable: false,\r\n pageSize: 999,\r\n expand: 'Fornecedor,Filial',\r\n sort: { field: \"ContratoCompraMTP\", dir: \"desc\" }\r\n });\r\n\r\n if ($stateParams['codigoProduto'] && $stateParams['codigoProduto'] != 'null') {\r\n ds.$adicionarFiltro('CodigoProduto', 'eq', $stateParams['codigoProduto']);\r\n }\r\n\r\n if ($stateParams['codigoNucleo'] && $stateParams['codigoNucleo'] > 0) {\r\n ds.$adicionarFiltro('Nucleo/Codigo', 'eq', $stateParams['codigoNucleo']);\r\n }\r\n\r\n if ($stateParams['anoSafra'] && $stateParams['anoSafra'] != 'TODAS') {\r\n ds.$adicionarFiltro('AnoSafra', 'eq', $stateParams['anoSafra']);\r\n }\r\n\r\n vm.contratoComboOptions = {\r\n dataSource: ds.$gerarDataSource(),\r\n placeholder: \"Selecione um contrato\",\r\n dataTextField: \"ContratoCompraMTP\",\r\n dataValueField: \"ContratoCompraMTP\",\r\n value: $stateParams['contrato'].ContratoCompraMTP,\r\n change: function (e) {\r\n $stateParams['contrato'] = this.dataItem();\r\n $state.transitionTo($state.current.name, $stateParams, { reload: $state.current.name });\r\n }\r\n }\r\n }\r\n\r\n var redirect = $state.current.name != \"fornecedor.conta-corrente\";\r\n for (var item in FOR_CC_TABS_CONSTANT) {\r\n\r\n var tabItem = FOR_CC_TABS_CONSTANT[item];\r\n\r\n var model = {\r\n heading: '

' + tabItem.legenda + '

',\r\n route: tabItem.route\r\n };\r\n\r\n vm.tabData.push(model);\r\n\r\n if (!redirect) {\r\n $state.go(tabItem.route, $stateParams);\r\n redirect = true;\r\n }\r\n }\r\n } else {\r\n $state.go('fornecedor.contratos');\r\n }\r\n };\r\n\r\n iniciar();\r\n\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor.conta-corrente')\r\n .factory('ContaCorrenteParamsFactory', ContaCorrenteParamsFactory);\r\n\r\n function ContaCorrenteParamsFactory() {\r\n\r\n var factory = {\r\n getHeader: getHeader\r\n };\r\n\r\n function getHeader($stateParams) {\r\n return {\r\n \"OData.DocumentoFornecedor\": $stateParams['documentoFornecedor'],\r\n \"OData.DocumentoFazenda\": $stateParams['documentoFazenda'],\r\n \"OData.CodigoFornecedor\": $stateParams['codigoFornecedor'],\r\n \"OData.CodigoNucleo\": $stateParams['codigoNucleo'],\r\n \"OData.CodigoProduto\": $stateParams['codigoProduto'],\r\n \"OData.Posicao\": $stateParams['posicao'],\r\n \"OData.ContratoCompraMtp\": $stateParams['contrato'] ? $stateParams['contrato'].ContratoCompraMTP : \"\",\r\n \"OData.CodigoEmpresa\": $stateParams['contrato'] ? $stateParams['contrato'].CodigoEmpresa : \"\",\r\n \"OData.CodigoFilial\": $stateParams['contrato'] ? $stateParams['contrato'].CodigoFilial : \"\",\r\n \"OData.AnoSafra\": !$stateParams['anoSafra'] || $stateParams['anoSafra'] == \"TODAS\" ? -1 : $stateParams['anoSafra'],\r\n \"OData.ContratosSafra\": JSON.stringify($stateParams['contratosSafra'])\r\n }\r\n }\r\n return factory;\r\n }\r\n})();","(function () {\r\n\r\n angular\r\n .module('bunge.modules.fornecedor.contratos')\r\n .controller('FornecedorContratosController', FornecedorContratosController);\r\n\r\n FornecedorContratosController.$inject = ['KendoDataSourceFactory', '$scope', 'FornecedorContratosService', '$rootScope', '$q', '$state', 'HelperFactory', '$stateParams'];\r\n\r\n function FornecedorContratosController(KendoDataSourceFactory, $scope, FornecedorContratosService, $rootScope, $q, $state, HelperFactory, $stateParams) {\r\n var vm = this;\r\n vm.filtros = {};\r\n vm.filtros.posicao = \"1\";\r\n \r\n\r\n vm.ehUsuarioExterno = function () {\r\n if (!$rootScope.currentUser) {\r\n return true;\r\n }\r\n return $rootScope.currentUser.userRole.toUpperCase() == \"EXTERNO\";\r\n };\r\n\r\n var dataSourceFornecedor = KendoDataSourceFactory.iniciar({ endpoint: 'Fornecedor', fornecedor: true, sort: { field: \"CodigoFornecedor\", dir: \"desc\" } });\r\n dataSourceFornecedor.$adicionarFiltro('Fazenda', 'equal', '1');\r\n vm.usuariosDataSource = {\r\n filter: \"contains\",\r\n minLength: 3,\r\n dataTextField: 'DescricaoFornecedor',\r\n dataSource: dataSourceFornecedor.$gerarDataSource(),\r\n placeholder: 'Informe um usuário...',\r\n change: comboUserOnChange\r\n };\r\n\r\n vm.fazendaDataSource = {\r\n filter: \"contains\",\r\n minLength: 3,\r\n dataTextField: 'NomeFantasia',\r\n placeholder: 'Informe uma fazenda...',\r\n change: fazendaOnChange\r\n };\r\n\r\n vm.regionalDataSource = {\r\n filter: \"contains\",\r\n minLength: 3,\r\n dataTextField: 'nome',\r\n placeholder: 'Informe uma regional...',\r\n change: regionalOnChange\r\n };\r\n\r\n vm.produtoDataSource = {\r\n filter: \"contains\",\r\n minLength: 3,\r\n dataTextField: 'nome',\r\n placeholder: 'Informe um produto...',\r\n change: produtoOnChange\r\n };\r\n\r\n vm.safraDataSource = {\r\n placeholder: 'Informe um produto...',\r\n change: safraOnChange\r\n };\r\n\r\n vm.init = function () {\r\n if ($stateParams['filtros']) {\r\n vm.filtros = $stateParams['filtros'];\r\n\r\n vm.usuariosDataSource.dataSource.read()\r\n .then(function () {\r\n if (vm.ehUsuarioExterno()) {\r\n vm.fornecedores.value($rootScope.currentUser.userSystemName);\r\n var fornecedores = vm.fornecedores.dataSource._data;\r\n var fornecedorSelecionado = fornecedores.filter(function (fornecedor) {\r\n return fornecedor.DescricaoFornecedor = $rootScope.currentUser.userSystemName;\r\n });\r\n vm.filtros.fornecedorSelecionado = fornecedorSelecionado[0];\r\n } else {\r\n vm.fornecedores.value(vm.filtros.fornecedorSelecionado.NomeFantasia);\r\n }\r\n })\r\n .then(function () {\r\n return carregarFazenda();\r\n })\r\n .then(function () {\r\n if(vm.filtros.fazendaSelecionada) {\r\n vm.fazendas.value(vm.filtros.fazendaSelecionada.NomeFantasia);\r\n }\r\n return recarregarCombos(true);\r\n })\r\n .then(function () {\r\n vm.form.$submitted = true;\r\n vm.filtrar();\r\n });\r\n } else {\r\n if (vm.ehUsuarioExterno()) {\r\n vm.usuariosDataSource.dataSource.read()\r\n .then(function () {\r\n vm.fornecedores.value($rootScope.currentUser.userSystemName);\r\n var fornecedores = vm.fornecedores.dataSource._data;\r\n var fornecedorSelecionado = fornecedores.filter(function (fornecedor) {\r\n return fornecedor.DescricaoFornecedor = $rootScope.currentUser.userSystemName;\r\n });\r\n vm.filtros.fornecedorSelecionado = fornecedorSelecionado[0];\r\n recarregarCombos();\r\n });\r\n }\r\n }\r\n };\r\n\r\n vm.init();\r\n\r\n vm.abrirDetalhe = function (dataItem) {\r\n vm.contratoDetalhe = [];\r\n vm.contratoDetalhe.push({\r\n contratoMTP: dataItem.ContratoCompraMTP,\r\n codigoEmpresa: dataItem.CodigoEmpresa,\r\n codigoFilial: dataItem.CodigoFilial\r\n });\r\n };\r\n\r\n vm.abrirContaCorrente = function (dataItem) {\r\n if(vm.filtros.posicao == 2) {\r\n vm.getContratosFromDatasource(dataItem.AnoSafra)\r\n .then(function(data) {\r\n abrirContaCorrente(data);\r\n })\r\n } else {\r\n abrirContaCorrente();\r\n }\r\n\r\n function abrirContaCorrente(contratosSafra) {\r\n $state.go('fornecedor.conta-corrente', {\r\n posicao: vm.filtros.posicao,\r\n contrato: vm.filtros.posicao == 1 ? dataItem : null,\r\n documentoFornecedor: vm.filtros.fornecedorSelecionado.Documento,\r\n documentoFazenda: vm.filtros.fazendaSelecionada ? vm.filtros.fazendaSelecionada.Documento : null,\r\n codigoFornecedor: vm.filtros.fornecedorSelecionado.CodigoFornecedor,\r\n codigoNucleo: vm.filtros.regionalSelecionado ? vm.filtros.regionalSelecionado.codigo : null,\r\n codigoProduto: vm.filtros.produtoSelecionado && vm.filtros.produtoSelecionado.codigo > 0 ? vm.filtros.produtoSelecionado.codigo : \"null\",\r\n anoSafra: vm.filtros.posicao == 2 ? dataItem.AnoSafra : vm.filtros.safraSelecionado,\r\n filtros: vm.ultimoFiltro,\r\n contratosSafra: contratosSafra\r\n });\r\n }\r\n };\r\n\r\n function recarregarCombos(vemDoFiltro) {\r\n vm.form.$submitted = false;\r\n if (vm.filtros.fornecedorSelecionado) {\r\n if(!vemDoFiltro) {\r\n carregarFazenda(); \r\n }\r\n\r\n // vm.fornecedores.value(vm.filtros.fornecedorSelecionado.NomeFantasia)\r\n var fazendaSelecionada = vm.filtros.fazendaSelecionada ? vm.filtros.fazendaSelecionada.Documento : null;\r\n var promises = [\r\n FornecedorContratosService.getRegionalData(vm.filtros.fornecedorSelecionado.Documento, fazendaSelecionada, vm.filtros.produtoSelecionado && vm.filtros.produtoSelecionado.codigo > 0 ? vm.filtros.produtoSelecionado.codigo : \"null\", (!vm.filtros.safraSelecionado || vm.filtros.safraSelecionado == 'TODOS') ? 0 : vm.filtros.safraSelecionado),\r\n FornecedorContratosService.getProdutoData(vm.filtros.fornecedorSelecionado.Documento, fazendaSelecionada, !vm.filtros.regionalSelecionado ? null : vm.filtros.regionalSelecionado.codigo, (!vm.filtros.safraSelecionado || vm.filtros.safraSelecionado == 'TODOS') ? 0 : vm.filtros.safraSelecionado),\r\n FornecedorContratosService.getAnoSafraData(vm.filtros.fornecedorSelecionado.Documento, fazendaSelecionada, !vm.filtros.regionalSelecionado ? null : vm.filtros.regionalSelecionado.codigo, vm.filtros.produtoSelecionado && vm.filtros.produtoSelecionado.codigo > 0 ? vm.filtros.produtoSelecionado.codigo : \"null\")\r\n ];\r\n\r\n return $q.all(promises).then(function (values) {\r\n var retornoRegional = values[0].data;\r\n retornoRegional.unshift({ nome: \"TODOS\", codigo: null });\r\n vm.regional.setDataSource({ data: retornoRegional });\r\n\r\n if (vm.filtros.regionalSelecionado) {\r\n vm.regional.select(function (dataItem) {\r\n return dataItem.codigo == vm.filtros.regionalSelecionado.codigo;\r\n });\r\n }\r\n vm.filtros.regionalSelecionado = vm.regional.dataItem();\r\n\r\n var retornoProduto = values[1].data;\r\n retornoProduto.unshift({ nome: \"TODOS\", codigo: \"-1\" });\r\n vm.produto.setDataSource({ data: retornoProduto });\r\n\r\n if (vm.filtros.produtoSelecionado) {\r\n vm.produto.select(function (dataItem) {\r\n return dataItem.codigo == vm.filtros.produtoSelecionado.codigo;\r\n });\r\n }\r\n vm.filtros.produtoSelecionado = vm.produto.dataItem();\r\n\r\n var retornoAnoSafra = values[2].data;\r\n retornoAnoSafra.unshift(\"TODAS\");\r\n vm.safra.setDataSource({ data: retornoAnoSafra });\r\n\r\n if (vm.filtros.regionalSelecionado || vm.filtros.safraSelecionado) {\r\n vm.safra.select(function (dataItem) {\r\n return dataItem == vm.filtros.safraSelecionado;\r\n });\r\n }\r\n\r\n vm.filtros.safraSelecionado = vm.safra.dataItem();\r\n });\r\n }\r\n }\r\n\r\n function fazendaOnChange() {\r\n vm.filtros.fazendaSelecionada = this.dataItem(this.select());\r\n recarregarCombos();\r\n $scope.$evalAsync();\r\n }\r\n\r\n function carregarFazenda(fazenda) {\r\n //TODO Filtrar novamente a fazendo quando filtrado pelo texto\r\n //fazenda = angular.isUndefined(fazenda) ? '' : fazenda;\r\n return FornecedorContratosService.getFazendas(vm.filtros.fornecedorSelecionado.Documento, fazenda)\r\n .then(function(result) {\r\n var fazendas = result.data.value;\r\n fazendas.unshift({NomeFantasia: \"TODAS\", Documento: null});\r\n vm.fazendas.setDataSource({data: fazendas});\r\n });\r\n }\r\n\r\n function comboUserOnChange() {\r\n limparFazenda();\r\n limparRegional();\r\n limparProduto();\r\n limparSafra();\r\n vm.filtros.fornecedorSelecionado = this.dataItem(this.select());\r\n if (vm.filtros.fornecedorSelecionado) {\r\n recarregarCombos();\r\n }\r\n $scope.$evalAsync();\r\n }\r\n\r\n function reiniciarPosicao() {\r\n vm.filtros.posicao = \"1\";\r\n }\r\n\r\n function regionalOnChange() {\r\n vm.filtros.regionalSelecionado = this.dataItem(this.select());\r\n recarregarCombos();\r\n $scope.$evalAsync();\r\n }\r\n\r\n function produtoOnChange() {\r\n vm.filtros.produtoSelecionado = this.dataItem(this.select());\r\n recarregarCombos();\r\n $scope.$evalAsync();\r\n }\r\n\r\n vm.limpar = function () {\r\n limparFornecedor();\r\n limparFazenda();\r\n reiniciarPosicao();\r\n limparRegional();\r\n limparProduto();\r\n limparSafra();\r\n limparTabela();\r\n vm.form.$submitted = false;\r\n $scope.$evalAsync();\r\n };\r\n\r\n function limparTabela() {\r\n if (vm.grid) {\r\n vm.grid.dataSource.data([]);\r\n }\r\n }\r\n\r\n vm.filtrar = function() {\r\n var ds;\r\n if (vm.filtros.posicao == 1) {\r\n ds = KendoDataSourceFactory.iniciar({\r\n endpoint: 'Contrato',\r\n fornecedor: true,\r\n pageable: false,\r\n pageSize: 999,\r\n expand: 'Fornecedor,Filial',\r\n sort: { field: \"ContratoCompraMTP\", dir: \"desc\" }\r\n });\r\n\r\n var fazendaSelecionada = vm.filtros.fazendaSelecionada ? vm.filtros.fazendaSelecionada.Documento : null;\r\n if (fazendaSelecionada) {\r\n ds.$adicionarFiltro('Fornecedor/Documento', 'eq', fazendaSelecionada);\r\n } else {\r\n // if (vm.ehUsuarioExterno()) {\r\n // ds.$adicionarFiltro('Fornecedor/Documento', 'eq', vm.filtros.fornecedorSelecionado.Documento);\r\n // } else {\r\n ds.$adicionarFiltro('Fornecedor/Documento', 'startswith', vm.filtros.fornecedorSelecionado.Documento.substring(0, 8));\r\n // }\r\n }\r\n \r\n\r\n if (vm.filtros.regionalSelecionado && vm.filtros.regionalSelecionado.codigo > 0) {\r\n ds.$adicionarFiltro('Nucleo/Codigo', 'eq', vm.filtros.regionalSelecionado.codigo);\r\n }\r\n\r\n if (vm.filtros.produtoSelecionado && vm.filtros.produtoSelecionado.codigo > 0) {\r\n ds.$adicionarFiltro('CodigoProduto', 'eq', vm.filtros.produtoSelecionado.codigo);\r\n }\r\n\r\n if (vm.filtros.safraSelecionado && vm.filtros.safraSelecionado != 'TODAS') {\r\n ds.$adicionarFiltro('AnoSafra', 'eq', vm.filtros.safraSelecionado);\r\n }\r\n } else {\r\n ds = KendoDataSourceFactory.iniciar({\r\n endpoint: 'ContratoSafra',\r\n fornecedor: true,\r\n pageable: false,\r\n pageSize: 999,\r\n sort: { field: \"AnoSafra\", dir: \"asc\" },\r\n header: {\r\n \"OData.TipoConsultaContrato\": vm.filtros.tipoConsulta,\r\n \"OData.DocumentoFornecedor\": vm.filtros.fornecedorSelecionado.Documento,\r\n \"OData.CodigoNucleo\": vm.filtros.regionalSelecionado ? vm.filtros.regionalSelecionado.codigo : null,\r\n \"OData.CodigoProduto\": vm.filtros.produtoSelecionado && vm.filtros.produtoSelecionado.codigo > 0 ? vm.filtros.produtoSelecionado.codigo : \"null\",\r\n \"OData.AnoSafra\": vm.filtros.safraSelecionado == \"TODAS\" ? -1 : vm.filtros.safraSelecionado\r\n }\r\n });\r\n }\r\n\r\n vm.grid.setOptions(vm.paramsGridOptions());\r\n\r\n ds.$adicionarCampoModelo(\"QuantidadeEntregue\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadeEntregar\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadeContribuicaoCif\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadeContribuicaoFob\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadeTotalFixadaPaga\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadeRecebidaFixada\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadeFixar\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadeNaoCumpridaFixa\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadeNaoCumpridaPaga\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadeNaoCumprida\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadeContratada\", { type: \"number\" });\r\n\r\n ds.$adicionarCampoAggregate(\"QuantidadeEntregue\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"QuantidadeEntregar\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"QuantidadeContribuicaoCif\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"QuantidadeContribuicaoFob\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"QuantidadeTotalFixadaPaga\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"QuantidadeRecebidaFixada\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"QuantidadeFixar\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"QuantidadeNaoCumpridaFixa\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"QuantidadeNaoCumpridaPaga\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"QuantidadeNaoCumprida\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"QuantidadeContratada\", \"sum\");\r\n \r\n vm.grid.setDataSource(ds.$gerarDataSource());\r\n vm.ultimoFiltro = angular.copy(vm.filtros);\r\n\r\n var mensagem = FornecedorContratosService.getMensagemContaCorrente().then(function (response) {\r\n $rootScope.MensagemContaCorrenteContratos = response.data;\r\n });\r\n };\r\n\r\n vm.habilitarFiltro = function () {\r\n return vm.filtros.fornecedorSelecionado;\r\n };\r\n\r\n function safraOnChange() {\r\n vm.filtros.safraSelecionado = this.dataItem(this.select());\r\n recarregarCombos();\r\n $scope.$evalAsync();\r\n }\r\n\r\n function limparRegional() {\r\n if (!vm.ehUsuarioExterno()) {\r\n vm.regional.dataSource.data([]);\r\n }\r\n vm.filtros.regionalSelecionado = undefined;\r\n vm.regional.value('');\r\n }\r\n\r\n function limparFornecedor() {\r\n if (!vm.ehUsuarioExterno()) {\r\n vm.filtros.fornecedorSelecionado = undefined;\r\n vm.fornecedores.value('');\r\n vm.fornecedores.text('');\r\n }\r\n }\r\n\r\n function limparProduto() {\r\n vm.filtros.produtoSelecionado = undefined;\r\n vm.produto.dataSource.data([]);\r\n vm.produto.value('');\r\n }\r\n\r\n function limparSafra() {\r\n vm.filtros.fazendaSelecionada = undefined;\r\n vm.safra.dataSource.data([]);\r\n vm.safra.value('');\r\n }\r\n\r\n function limparFazenda() {\r\n vm.filtros.safraSelecionado = undefined;\r\n vm.fazendas.dataSource.data([]);\r\n vm.fazendas.value('');\r\n }\r\n\r\n function posicaoAtual() {\r\n return vm.filtros.posicao;\r\n }\r\n\r\n vm.paramsGridOptions = function () {\r\n return {\r\n resizable: true,\r\n filterable: true,\r\n sortable: true,\r\n columnMenu: true,\r\n pageSize: 999,\r\n excel: {\r\n allPages: false,\r\n fileName: 'Contratos.csv'\r\n },\r\n toolbar: [{\r\n name: 'excel',\r\n template: \"Gerar Excel\"\r\n }],\r\n dataBound: function (e) {\r\n HelperFactory.mergeFooterTemplate(e, 0, 2);\r\n if (!$('.k-toolbar-footer').length) {\r\n $('#gridContratos').find(\".k-grid-toolbar\").addClass('k-toolbar-footer').insertAfter($('#gridContratos'));\r\n } else {\r\n $('.k-grid-toolbar').not('.k-toolbar-footer').remove();\r\n }\r\n },\r\n columns: [{\r\n title: \"Quantidades Gerais (Kg)\",\r\n headerAttributes: { style: \"text-align: center; border-right-color: rgb(204, 204, 204) !important;border-right-style: solid !important;border-right-width: 1px !important;border-collapse: separate !important;\" },\r\n attributes: { style: \"text-align: right\" },\r\n columns: [{\r\n command: !vm.filtros.posicao || vm.filtros.posicao == 1 ? [{\r\n template: ''\r\n },\r\n {\r\n template: ''\r\n }\r\n ] : [{\r\n template: ''\r\n }],\r\n attributes: { style: \"text-align: center\" },\r\n headerAttributes: { style: \"text-align: center\" },\r\n title: \"Ações\",\r\n width: 70,\r\n footerAttributes: { style: \"text-align: center\" },\r\n footerTemplate: \"TOTAL\"\r\n },\r\n vm.filtros.posicao == 1 ? {\r\n title: 'Contrato',\r\n field: 'ContratoCompraMTP',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n } : {\r\n title: \"Safra\",\r\n field: 'AnoSafra',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n },\r\n {\r\n title: \"Contratada\",\r\n field: 'QuantidadeContratada',\r\n aggregates: [\"sum\"],\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.QuantidadeContratada) {# #=kendo.toString (data.QuantidadeContratada,'n0')# #}else{#0#}#\",\r\n footerAttributes: { style: \"text-align: right\" },\r\n footerTemplate: function (data) {\r\n return data.QuantidadeContratada && data.QuantidadeContratada.sum ? kendo.toString(data.QuantidadeContratada.sum, 'n0') : 0\r\n },\r\n }, {\r\n title: \"Entregue\",\r\n field: 'QuantidadeEntregue',\r\n aggregates: [\"sum\"],\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.QuantidadeEntregue) {# #=kendo.toString (data.QuantidadeEntregue,'n0')# #}else{#0#}#\",\r\n footerTemplate: function (data) {\r\n return data.QuantidadeEntregue && data.QuantidadeEntregue.sum ? kendo.toString(data.QuantidadeEntregue.sum, 'n0') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" },\r\n }, {\r\n title: \"A Entregar\",\r\n field: 'QuantidadeEntregar',\r\n aggregates: [\"sum\"],\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.QuantidadeEntregar) {# #=kendo.toString(data.QuantidadeEntregar, 'n0')# #}else{#0#}#\",\r\n footerAttributes: { style: \"text-align: right\" },\r\n footerTemplate: function (data) {\r\n return data.QuantidadeEntregar && data.QuantidadeEntregar.sum ? kendo.toString(data.QuantidadeEntregar.sum, 'n0') : 0\r\n },\r\n }, {\r\n title: 'Qtd. Fixar',\r\n field: 'QuantidadeFixar',\r\n aggregates: [\"sum\"],\r\n template: \"#if(data.QuantidadeFixar) {# #=kendo.toString(data.QuantidadeFixar, 'n0')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center; vertical-align:middle\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n attributes: { style: \"text-align: right\" },\r\n footerTemplate: function (data) {\r\n return data.QuantidadeFixar && data.QuantidadeFixar.sum ? kendo.toString(data.QuantidadeFixar.sum, 'n0') : 0\r\n },\r\n\r\n },\r\n vm.filtros.posicao == 1 ? {\r\n title: \"Frete\",\r\n field: 'DescricaoTipoFrete',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n } : { hidden: true }\r\n ]\r\n },\r\n {\r\n title: \"Quantidade Fixada (Kg)\",\r\n headerAttributes: { style: \"text-align: center; border-right-color: rgb(204, 204, 204) !important;border-right-style: solid !important;border-right-width: 1px !important;border-collapse: separate !important;\" },\r\n attributes: { style: \"text-align: right\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n columns: [{\r\n title: \"Qtd. Paga\",\r\n field: 'QuantidadeTotalFixadaPaga',\r\n aggregates: [\"sum\"],\r\n template: \"#if(data.QuantidadeTotalFixadaPaga) {# #=kendo.toString(data.QuantidadeTotalFixadaPaga, 'n0')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n footerTemplate: function (data) {\r\n return data.QuantidadeTotalFixadaPaga && data.QuantidadeTotalFixadaPaga.sum ? kendo.toString(data.QuantidadeTotalFixadaPaga.sum, 'n0') : 0\r\n },\r\n }, {\r\n title: \"A Pagar\",\r\n field: 'QuantidadeRecebidaFixada',\r\n aggregates: [\"sum\"],\r\n template: \"#if(data.QuantidadeRecebidaFixada) {# #=kendo.toString(data.QuantidadeRecebidaFixada, 'n0')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n footerTemplate: function (data) {\r\n return data.QuantidadeRecebidaFixada && data.QuantidadeRecebidaFixada.sum ? kendo.toString(data.QuantidadeRecebidaFixada.sum, 'n0') : 0\r\n },\r\n }]\r\n },\r\n {\r\n title: \"Quantidade Não Cumprida (Kg)\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n attributes: { style: \"text-align: right\" },\r\n columns: [{\r\n title: \"Paga\",\r\n field: 'QuantidadeNaoCumpridaPaga',\r\n aggregates: [\"sum\"],\r\n template: \"#if(data.QuantidadeNaoCumpridaPaga) {# #=kendo.toString(data.QuantidadeNaoCumpridaPaga, 'n0')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n footerTemplate: function (data) {\r\n return data.QuantidadeNaoCumpridaPaga && data.QuantidadeNaoCumpridaPaga.sum ? kendo.toString(data.QuantidadeNaoCumpridaPaga.sum, 'n0') : 0\r\n },\r\n }, {\r\n title: \"A Pagar\",\r\n field: 'QuantidadeNaoCumpridaFixa',\r\n aggregates: [\"sum\"],\r\n template: \"#if(data.QuantidadeNaoCumpridaFixa) {# #=kendo.toString(data.QuantidadeNaoCumpridaFixa, 'n0')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n footerTemplate: function (data) {\r\n return data.QuantidadeNaoCumpridaFixa && data.QuantidadeNaoCumpridaFixa.sum ? kendo.toString(data.QuantidadeNaoCumpridaFixa.sum, 'n0') : 0\r\n },\r\n }, {\r\n title: \"A Fixar\",\r\n field: 'QuantidadeNaoCumprida',\r\n aggregates: [\"sum\"],\r\n template: \"#if(data.QuantidadeNaoCumprida) {# #=kendo.toString(data.QuantidadeNaoCumprida, 'n0')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n footerTemplate: function (data) {\r\n return data.QuantidadeNaoCumprida && data.QuantidadeNaoCumprida.sum ? kendo.toString(data.QuantidadeNaoCumprida.sum, 'n0') : 0\r\n },\r\n }]\r\n }\r\n ],\r\n\r\n }\r\n }\r\n\r\n vm.getContratosFromDatasource = function(anoSafra) {\r\n var deferred = $q.defer();\r\n\r\n var ds = KendoDataSourceFactory.iniciar({\r\n endpoint: 'ContratoSafra',\r\n fornecedor: true,\r\n pageable: false,\r\n pageSize: 999,\r\n sort: { field: \"CodigoEmpresa\", dir: \"asc\" },\r\n header: {\r\n \"OData.TipoConsultaContrato\": vm.filtros.tipoConsulta,\r\n \"OData.DocumentoFornecedor\": vm.filtros.fornecedorSelecionado.Documento,\r\n \"OData.CodigoNucleo\": vm.filtros.regionalSelecionado ? vm.filtros.regionalSelecionado.codigo : null,\r\n \"OData.CodigoProduto\": vm.filtros.produtoSelecionado && vm.filtros.produtoSelecionado.codigo > 0 ? vm.filtros.produtoSelecionado.codigo : \"null\",\r\n \"OData.AnoSafra\": anoSafra,\r\n \"OData.ComChaves\": true\r\n },\r\n change: function() {\r\n var contratosSafra = []\r\n data = this._data;\r\n data.forEach(function(obj) {\r\n contratosSafra.push({\r\n CodigoEmpresa: obj.CodigoEmpresa,\r\n CodigoFilial: obj.CodigoFilial,\r\n ContratoCompraMTP: obj.ContratoCompraMTP\r\n });\r\n })\r\n deferred.resolve(contratosSafra);\r\n }\r\n });\r\n ds.$gerarDataSource().read();\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.modules.fornecedor.contratos')\r\n .directive('modalDetalheContrato', function() {\r\n return {\r\n restrict: 'EA',\r\n transclude: true,\r\n scope: {\r\n model: \"=\",\r\n onRemove: \"&\"\r\n },\r\n controller: ['$uibModal', '$scope', '$uibModalStack', 'HelperFactory', 'Flash', '$http', 'ENDPOINT_URI', function($uibModal, $scope, $uibModalStack, HelperFactory, Flash, $http, ENDPOINT_URI) {\r\n function iniciar() {\r\n Flash.clear();\r\n\r\n $http.get(ENDPOINT_URI.endpoint_fornecedorReq + 'contratos/' + $scope.model.contratoMTP + '/' + $scope.model.codigoEmpresa + '/' + $scope.model.codigoFilial).then(function(data) {\r\n $scope.model = data.data;\r\n\r\n $scope.paramsGridPrazosEntregaOptions = {\r\n resizable: true,\r\n filterable: true,\r\n sortable: true,\r\n columnMenu: true,\r\n dataSource: new kendo.data.DataSource({\r\n data: data.data.prazoEntrega,\r\n page: 1,\r\n schema: {\r\n model: {\r\n fields: {\r\n dataPrazoEntrega: {\r\n type: \"date\",\r\n },\r\n dataPrazoRetirada: {\r\n type: \"date\",\r\n },\r\n quantidadePrazoEntrega: {\r\n type: \"number\",\r\n }\r\n }\r\n },\r\n total: function() {\r\n return data.data.prazoEntrega.length;\r\n }\r\n }\r\n }),\r\n excel: {\r\n allPages: false,\r\n fileName: 'Prazo de Entrega.csv'\r\n },\r\n toolbar: [{\r\n name: 'excel',\r\n template: \"Gerar Excel\"\r\n }],\r\n dataBound: function(e) {\r\n HelperFactory.moveGridToolbarToFooter(\"#gridPrazoEntrega\");\r\n },\r\n columns: [{\r\n title: 'Data Prazo Entrega',\r\n field: 'dataPrazoEntrega',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n template: '#= kendo.toString(kendo.parseDate(data.dataPrazoEntrega,\"yyyy-MM-ddTHH:mm:ss\"),\"dd/MM/yyyy\")#'\r\n },\r\n {\r\n title: 'Data Prazo Retirada',\r\n field: 'dataPrazoRetirada',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n template: '#= kendo.toString(kendo.parseDate(data.dataPrazoEntrega,\"yyyy-MM-ddTHH:mm:ss\"),\"dd/MM/yyyy\")#'\r\n },\r\n {\r\n title: 'Quantidade (Kg)',\r\n field: 'quantidadePrazoEntrega',\r\n attributes: { style: \"text-align: right\" },\r\n headerAttributes: { style: \"text-align: center\" },\r\n template: \"#if(data.quantidadePrazoEntrega) {# #=kendo.toString (data.quantidadePrazoEntrega,'n0')# #}else{#0#}#\"\r\n }\r\n ]\r\n };\r\n\r\n $scope.paramsGridPrazosFixacaoOptions = {\r\n resizable: true,\r\n filterable: true,\r\n sortable: true,\r\n columnMenu: true,\r\n dataSource: new kendo.data.DataSource({\r\n data: data.data.prazoFixacao,\r\n page: 1,\r\n schema: {\r\n model: {\r\n fields: {\r\n dataFimPrazoFixacao: {\r\n type: \"date\",\r\n },\r\n dataInicioPrazoFixacao: {\r\n type: \"date\",\r\n },\r\n quantidadeProgramada: {\r\n type: \"number\",\r\n },\r\n quantidadeFixada: {\r\n type: \"number\",\r\n },\r\n quantidadePrazoFixacao: {\r\n type: \"number\",\r\n }\r\n }\r\n },\r\n total: function() {\r\n return data.data.prazoFixacao.length;\r\n }\r\n }\r\n }),\r\n excel: {\r\n allPages: false,\r\n fileName: 'Prazo de Fixação.csv'\r\n },\r\n toolbar: [{\r\n name: 'excel',\r\n template: \"Gerar Excel\"\r\n }],\r\n dataBound: function(e) {\r\n HelperFactory.moveGridToolbarToFooter(\"#gridPrazoFixacao\");\r\n },\r\n columns: [{\r\n title: 'Data Início',\r\n field: 'dataInicioPrazoFixacao',\r\n template: '#= kendo.toString(kendo.parseDate(data.dataInicioPrazoFixacao,\"yyyy-MM-ddTHH:mm:ss\"),\"dd/MM/yyyy\")#',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n width: 50\r\n },\r\n {\r\n title: 'Data Fim',\r\n field: 'dataFimPrazoFixacao',\r\n template: '#= kendo.toString(kendo.parseDate(data.dataFimPrazoFixacao,\"yyyy-MM-ddTHH:mm:ss\"),\"dd/MM/yyyy\")#',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n width: '50px'\r\n },\r\n {\r\n title: 'Quantidade Programada (Kg)',\r\n field: 'quantidadeProgramada',\r\n width: '50px',\r\n template: \"#if(data.quantidadeProgramada) {# #=kendo.toString (data.quantidadeProgramada,'n0')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n },\r\n {\r\n title: 'Quantidade Fixada (Kg)',\r\n field: 'quantidadeFixada',\r\n width: '50px',\r\n template: \"#if(data.quantidadeFixada) {# #=kendo.toString (data.quantidadeFixada,'n0')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n },\r\n {\r\n title: 'Quantidade a Fixar (Kg)',\r\n field: 'quantidadePrazoFixacao',\r\n width: '50px',\r\n template: \"#if(data.quantidadePrazoFixacao) {# #=kendo.toString (data.quantidadePrazoFixacao,'n0')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n }\r\n ]\r\n };\r\n });\r\n }\r\n iniciar();\r\n\r\n $scope.close = function() {\r\n $uibModalStack.dismissAll();\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n animation: true,\r\n scope: $scope,\r\n size: 'lg',\r\n templateUrl: 'app/modules/fornecedor/submodules/contratos/modal-detalhe-contrato/modal-detalhe-contrato.template.html',\r\n });\r\n\r\n modalInstance.result.then(function(selectedItem) {}, function() {\r\n $scope.onRemove();\r\n });\r\n }],\r\n };\r\n });\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor.contratos')\r\n .service('FornecedorContratosService', FornecedorContratosService);\r\n\r\n FornecedorContratosService.$inject = ['ENDPOINT_URI', '$http', 'KendoDataSourceFactory'];\r\n\r\n function FornecedorContratosService(ENDPOINT_URI, $http, KendoDataSourceFactory) {\r\n var FornecedorContratosService = function () {\r\n this.getRegionalData = function (idFornecedor, documentoFazenda, idRegional, idProduto) {\r\n return $http.get(ENDPOINT_URI.endpoint_fornecedorReq + 'contratos/regional/' + idFornecedor + '/' + documentoFazenda + '/' + idRegional + '/' + idProduto);\r\n };\r\n this.getProdutoData = function (idFornecedor, documentoFazenda, idRegional, anoSafra) {\r\n return $http.get(ENDPOINT_URI.endpoint_fornecedorReq + 'contratos/produtos/' + idFornecedor + '/' + documentoFazenda + '/' + idRegional + '/' + anoSafra);\r\n };\r\n this.getAnoSafraData = function (idFornecedor, documentoFazenda, idRegional, idProduto) {\r\n return $http.get(ENDPOINT_URI.endpoint_fornecedorReq + 'contratos/safra/' + idFornecedor + '/' + documentoFazenda + '/' + idRegional + '/' + idProduto);\r\n };\r\n this.getMensagemContaCorrente = function () {\r\n return $http.get(ENDPOINT_URI.endpoint_fornecedorReq + 'conta-corrente/mensagem-conta-corrente');\r\n };\r\n this.getFazendas = function(documentoFornecedor, fazenda) {\r\n if (!fazenda) fazenda = \"\";\r\n documentoFornecedor = documentoFornecedor.substring(0, 8);\r\n return $http.get(ENDPOINT_URI.endpoint_fornecedorReq + 'oData/Fornecedor?$top=10&$orderby=CodigoFornecedor%20desc&$filter=((Fazenda%20eq%20%272%27)%20and%20((startswith(Documento,%27' + documentoFornecedor + '%27)%20and%20contains(tolower(DescricaoFornecedor),%27' + fazenda + '%27))))&$count=true');\r\n }\r\n };\r\n\r\n return new FornecedorContratosService();\r\n }\r\n}());","(function() {\r\n\r\n angular\r\n .module('bunge.modules.fornecedor.pagamentos')\r\n .controller('FornecedorPagamentosController', FornecedorPagamentosController);\r\n\r\n FornecedorPagamentosController.$inject = ['KendoDataSourceFactory', '$rootScope', 'FornecedorPagamentosService', '$q', '$scope', 'HelperFactory', 'Flash'];\r\n\r\n function FornecedorPagamentosController(KendoDataSourceFactory, $rootScope, FornecedorPagamentosService, $q, $scope, HelperFactory, Flash) {\r\n var vm = this;\r\n vm.ehUsuarioExterno = function() {\r\n if (!$rootScope.currentUser) {\r\n return true;\r\n }\r\n return $rootScope.currentUser.userRole.toUpperCase() == \"EXTERNO\";\r\n };\r\n\r\n vm.init = function() {\r\n if (vm.ehUsuarioExterno()) {\r\n vm.fornecedorSelecionado = { Codigo: $rootScope.currentUser.userName };\r\n vm.tipoConsulta = \"1\";\r\n recarregarCombos();\r\n }\r\n };\r\n\r\n vm.init();\r\n\r\n var dataSourceFornecedor = KendoDataSourceFactory.iniciar({ endpoint: 'Fornecedor', fornecedor: true, sort: { field: \"CodigoFornecedor\", dir: \"desc\" } });\r\n dataSourceFornecedor.$adicionarFiltro('Fazenda', 'equal', '1');\r\n vm.usuariosDataSource = {\r\n filter: \"contains\",\r\n minLength: 3,\r\n dataTextField: 'DescricaoFornecedor',\r\n dataSource: dataSourceFornecedor.$gerarDataSource(),\r\n autoBind: false,\r\n change: comboUserOnChange\r\n };\r\n\r\n vm.regionalDataSource = {\r\n filter: \"contains\",\r\n minLength: 3,\r\n dataTextField: 'nome',\r\n change: regionalOnChange\r\n };\r\n\r\n vm.safraDataSource = {\r\n change: safraOnChange\r\n };\r\n\r\n function comboUserOnChange() {\r\n limparRegional();\r\n limparSafra();\r\n vm.fornecedorSelecionado = this.dataItem(this.select());\r\n if (vm.fornecedorSelecionado) {\r\n recarregarCombos();\r\n }\r\n $scope.$evalAsync();\r\n }\r\n\r\n function limparTabela() {\r\n if (vm.grid) {\r\n vm.grid.dataSource.data([]);\r\n }\r\n }\r\n\r\n function limparRegional() {\r\n vm.regional.dataSource.data([]);\r\n vm.regionalSelecionado = undefined;\r\n vm.regional.value('');\r\n }\r\n\r\n function limparSafra() {\r\n vm.safraSelecionado = undefined;\r\n vm.safra.dataSource.data([]);\r\n vm.safra.value('');\r\n }\r\n\r\n function recarregarCombos() {\r\n if (vm.fornecedorSelecionado) {\r\n var safra = (!vm.safraSelecionado || vm.safraSelecionado == 'TODOS') ? 0 : vm.safraSelecionado;\r\n var regional = !vm.regionalSelecionado ? \"null\" : vm.regionalSelecionado.codigo;\r\n var promises = [\r\n FornecedorPagamentosService.getRegionalData(vm.fornecedorSelecionado.CodigoFornecedor, safra),\r\n FornecedorPagamentosService.getAnoSafraData(vm.fornecedorSelecionado.CodigoFornecedor, regional)\r\n ];\r\n\r\n $q.all(promises).then(function(values) {\r\n var retornoRegional = values[0].data;\r\n retornoRegional.unshift({ nome: \"TODOS\", codigo: \"null\" });\r\n vm.regional.setDataSource({ data: retornoRegional });\r\n\r\n if (vm.regionalSelecionado) {\r\n vm.regional.select(function(dataItem) {\r\n return dataItem.codigo == vm.regionalSelecionado.codigo;\r\n });\r\n }\r\n vm.regionalSelecionado = vm.regional.dataItem();\r\n\r\n var retornoAnoSafra = values[1].data;\r\n retornoAnoSafra.unshift(\"TODAS\");\r\n vm.safra.setDataSource({ data: retornoAnoSafra });\r\n\r\n if (vm.regionalSelecionado) {\r\n vm.safra.select(function(dataItem) {\r\n return dataItem == vm.safraSelecionado;\r\n });\r\n }\r\n vm.safraSelecionado = vm.safra.dataItem();\r\n });\r\n }\r\n }\r\n\r\n function regionalOnChange() {\r\n vm.regionalSelecionado = this.dataItem(this.select());\r\n recarregarCombos();\r\n $scope.$evalAsync();\r\n }\r\n\r\n function safraOnChange() {\r\n vm.safraSelecionado = this.dataItem(this.select());\r\n recarregarCombos();\r\n $scope.$evalAsync();\r\n }\r\n\r\n vm.paramsGridOptions = function() {\r\n return {\r\n resizable: true,\r\n filterable: true,\r\n sortable: true,\r\n columnMenu: true,\r\n excel: {\r\n allPages: false,\r\n fileName: 'Pagamentos.csv'\r\n },\r\n toolbar: [{\r\n name: 'excel',\r\n template: \"Gerar Excel\"\r\n }],\r\n dataBound: function(e) {\r\n HelperFactory.mergeFooterTemplate(e, 0, 8);\r\n if (!$('.k-toolbar-footer').length) {\r\n $('#gridPagamentos').find(\".k-grid-toolbar\").addClass('k-toolbar-footer').insertAfter($('#gridPagamentos'));\r\n } else {\r\n $('.k-grid-toolbar').not('.k-toolbar-footer').remove();\r\n }\r\n\r\n var tfooter = e.sender.footer[0];\r\n var trFooterClone = e.sender.footer[0].childNodes[0].cloneNode(true);\r\n var firstDataItem = e.sender._data[0];\r\n trFooterClone.childNodes[0].innerHTML = 'TOTAL US$';\r\n trFooterClone.childNodes[3].innerHTML = '';\r\n\r\n try {\r\n ValorProgramadoDolar = e.sender.dataSource._aggregateResult.ValorProgramadoDolar.sum;\r\n trFooterClone.childNodes[1].innerHTML = kendo.toString(ValorProgramadoDolar, 'n2');\r\n } catch (error) {\r\n trFooterClone.childNodes[1].innerHTML = '0';\r\n }\r\n tfooter.append(trFooterClone);\r\n },\r\n columns: [{\r\n title: 'Situação',\r\n field: 'Situacao',\r\n footerAttributes: { style: \"text-align: center\" },\r\n footerTemplate: \"TOTAL R$\"\r\n }, {\r\n title: 'Filial',\r\n field: 'NomeFilial'\r\n }, {\r\n title: 'CPNJ Fornecedor',\r\n field: 'DocumentoFornecedor ',\r\n headerAttributes: { style: 'text-align: center' },\r\n attributes: { style: 'text-align: center' },\r\n }, {\r\n title: 'Nome Fornecedor',\r\n field: 'NomeFornecedor'\r\n }, {\r\n title: 'Contrato',\r\n field: 'ContratoCompraMTP',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n }, {\r\n title: 'Nr. Pagamento',\r\n field: 'NumeroPagamento',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" }\r\n }, {\r\n title: 'Data Pagamento',\r\n field: 'DataPagamento',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n template: '#= kendo.toString(kendo.parseDate(data.DataPagamento,\"yyyy-MM-ddTHH:mm:ss\"),\"dd/MM/yyyy\")#'\r\n }, {\r\n title: \"Moeda\",\r\n field: 'MoedaProgramado',\r\n attributes: { style: 'text-align: center' }\r\n }, {\r\n title: \"Valor da Moeda\",\r\n field: 'ValorProgramado',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.ValorProgramado) {# #=kendo.toString(data.ValorProgramado, 'n2')# #}else{#0#}#\",\r\n footerAttributes: { style: \"text-align: right\" },\r\n footerTemplate: function(data) {\r\n return data.ValorProgramadoReal && data.ValorProgramadoReal.sum ? kendo.toString(data.ValorProgramadoReal.sum, 'n2') : 0\r\n }\r\n }, {\r\n title: 'Cotação US$',\r\n field: 'ValorCotacao',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.ValorCotacao) {# #=kendo.toString (data.ValorCotacao,'n3')# #}else{#0#}#\"\r\n }, {\r\n title: \"Valor Pagamento R$\",\r\n field: 'ValorPago',\r\n aggregates: [\"sum\"],\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.ValorPago) {# #=kendo.toString(data.ValorPago, 'n2')# #}else{#0#}#\",\r\n footerAttributes: { style: \"text-align: right\" },\r\n footerTemplate: function(data) {\r\n return data.ValorPago && data.ValorPago.sum ? kendo.toString(data.ValorPago.sum, 'n2') : 0\r\n }\r\n }, {\r\n title: 'Favorecido',\r\n field: 'NomeFavorecido'\r\n }]\r\n }\r\n }\r\n\r\n vm.filtrar = function() {\r\n var ds = KendoDataSourceFactory.iniciar({\r\n endpoint: 'PagamentoTerceiro',\r\n fornecedor: true,\r\n pageable: false,\r\n pageSize: 999,\r\n sort: { field: \"NomeNucleo\", dir: \"desc\" },\r\n header: {\r\n \"OData.CodigoFornecedor\": vm.fornecedorSelecionado ? vm.fornecedorSelecionado.CodigoFornecedor : \"null\",\r\n \"OData.CodigoNucleo\": vm.regionalSelecionado ? vm.regionalSelecionado.codigo : undefined,\r\n \"OData.AnoSafra\": (!vm.safraSelecionado || vm.safraSelecionado == 'TODAS') ? undefined : vm.safraSelecionado\r\n }\r\n });\r\n\r\n if (vm.dataInicio) {\r\n ds.$adicionarFiltro('DataPagamento', 'ge', vm.dataInicio);\r\n }\r\n\r\n if (vm.dataFim) {\r\n ds.$adicionarFiltro('DataPagamento', 'le', vm.dataFim);\r\n }\r\n\r\n if (vm.dataInicio && vm.dataFim) {\r\n if (vm.dataInicio.getTime() > vm.dataFim.getTime()) {\r\n Flash.create('danger', \"Data inicial não pode ser maior que a data final\");\r\n return;\r\n }\r\n }\r\n\r\n ds.$adicionarCampoModelo(\"DataPagamento\", { type: \"date\" });\r\n ds.$adicionarCampoModelo(\"ValorPago\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorCotacao\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorProgramado\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorProgramadoReal\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorProgramadoDolar\", { type: \"number\" });\r\n\r\n ds.$adicionarCampoAggregate(\"ValorPago\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorProgramadoReal\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorProgramadoDolar\", \"sum\");\r\n vm.grid.setDataSource(ds.$gerarDataSource());\r\n };\r\n\r\n vm.limpar = function() {\r\n limparRegional();\r\n limparSafra();\r\n limparTabela();\r\n limparFornecedor();\r\n limparDatas();\r\n vm.form.$submitted = false;\r\n };\r\n\r\n function limparFornecedor() {\r\n vm.fornecedorSelecionado = undefined;\r\n vm.fornecedores.value('');\r\n vm.fornecedores.text('');\r\n }\r\n\r\n function limparDatas() {\r\n vm.dataInicio = undefined;\r\n vm.dataFim = undefined;\r\n }\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor.pagamentos')\r\n .service('FornecedorPagamentosService', FornecedorPagamentosService);\r\n\r\n FornecedorPagamentosService.$inject = ['ENDPOINT_URI', '$http', 'KendoDataSourceFactory'];\r\n\r\n function FornecedorPagamentosService(ENDPOINT_URI, $http, KendoDataSourceFactory) {\r\n var FornecedorPagamentosService = function() {\r\n this.getRegionalData = function(idFornecedor, anoSafra) {\r\n return $http.get(ENDPOINT_URI.endpoint_fornecedorReq + 'pagamentos/regional/' + idFornecedor + '/' + anoSafra);\r\n };\r\n this.getAnoSafraData = function(idFornecedor, idRegional) {\r\n return $http.get(ENDPOINT_URI.endpoint_fornecedorReq + 'pagamentos/safra/' + idFornecedor + '/' + idRegional);\r\n };\r\n };\r\n return new FornecedorPagamentosService();\r\n }\r\n}());","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor.conta-corrente.fixacao', [])\r\n .config(['$stateProvider', '$urlRouterProvider', ConfigParametros])\r\n .run([RunParametros]);\r\n\r\n\r\n var $urlRouterProviderRef = null;\r\n var $stateProviderRef = null;\r\n\r\n function ConfigParametros($stateProvider, $urlRouterProvider) {\r\n $urlRouterProviderRef = $urlRouterProvider;\r\n $stateProviderRef = $stateProvider;\r\n }\r\n\r\n function RunParametros() {\r\n $stateProviderRef.state('fornecedor.conta-corrente.fixacao', {\r\n url: '/fixacao',\r\n params: {\r\n 'contrato': null,\r\n 'codigoFornecedor': null,\r\n 'codigoNucleo': null,\r\n 'codigoProduto': null,\r\n 'anoSafra': null\r\n },\r\n templateUrl: 'app/modules/fornecedor/submodules/conta-corrente/submodules/fixacao/view/fixacao.view.html',\r\n controller: 'FornecedorContaCorrenteFixacaoController',\r\n controllerAs: 'vm',\r\n });\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor.conta-corrente.nota-fiscal', [])\r\n .config(['$stateProvider', '$urlRouterProvider', ConfigParametros])\r\n .run([RunParametros]);\r\n\r\n\r\n var $urlRouterProviderRef = null;\r\n var $stateProviderRef = null;\r\n\r\n function ConfigParametros($stateProvider, $urlRouterProvider) {\r\n $urlRouterProviderRef = $urlRouterProvider;\r\n $stateProviderRef = $stateProvider;\r\n }\r\n\r\n function RunParametros() {\r\n $stateProviderRef.state('fornecedor.conta-corrente.nota-fiscal', {\r\n url: '/nota-fiscal',\r\n params: {\r\n 'contrato': null,\r\n 'codigoFornecedor': null,\r\n 'codigoNucleo': null,\r\n 'codigoProduto': null,\r\n 'anoSafra': null\r\n },\r\n templateUrl: 'app/modules/fornecedor/submodules/conta-corrente/submodules/nota-fiscal/view/nota-fiscal.view.html',\r\n controller: 'FornecedorContaCorrenteNotaFiscalController',\r\n controllerAs: 'vm',\r\n });\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor.conta-corrente.pagamento', [])\r\n .config(['$stateProvider', '$urlRouterProvider', ConfigParametros])\r\n .run([RunParametros]);\r\n\r\n\r\n var $urlRouterProviderRef = null;\r\n var $stateProviderRef = null;\r\n\r\n function ConfigParametros($stateProvider, $urlRouterProvider) {\r\n $urlRouterProviderRef = $urlRouterProvider;\r\n $stateProviderRef = $stateProvider;\r\n }\r\n\r\n function RunParametros() {\r\n $stateProviderRef.state('fornecedor.conta-corrente.pagamento', {\r\n url: '/pagamento',\r\n params: {\r\n 'contrato': null,\r\n 'codigoFornecedor': null,\r\n 'codigoNucleo': null,\r\n 'codigoProduto': null,\r\n 'anoSafra': null\r\n },\r\n templateUrl: 'app/modules/fornecedor/submodules/conta-corrente/submodules/pagamento/view/pagamento.view.html',\r\n controller: 'FornecedorContaCorrentePagamentoController',\r\n controllerAs: 'vm',\r\n });\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor.conta-corrente.recebimentos', [])\r\n .config(['$stateProvider', '$urlRouterProvider', ConfigParametros])\r\n .run([RunParametros]);\r\n\r\n\r\n var $urlRouterProviderRef = null;\r\n var $stateProviderRef = null;\r\n\r\n function ConfigParametros($stateProvider, $urlRouterProvider) {\r\n $urlRouterProviderRef = $urlRouterProvider;\r\n $stateProviderRef = $stateProvider;\r\n }\r\n\r\n function RunParametros() {\r\n $stateProviderRef.state('fornecedor.conta-corrente.recebimentos', {\r\n url: '/recebimentos',\r\n params: {\r\n 'contrato': null,\r\n \"codigoFornecedor\": null,\r\n \"codigoNucleo\": null,\r\n \"codigoProduto\": null,\r\n \"anoSafra\": null,\r\n },\r\n templateUrl: 'app/modules/fornecedor/submodules/conta-corrente/submodules/recebimentos/view/recebimentos.view.html',\r\n controller: 'FornecedorContaCorrenteRecebimentosController',\r\n controllerAs: 'vm',\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor.conta-corrente.saldo-contrato', [])\r\n .config(['$stateProvider', '$urlRouterProvider', ConfigParametros])\r\n .run([RunParametros]);\r\n\r\n\r\n var $urlRouterProviderRef = null;\r\n var $stateProviderRef = null;\r\n\r\n function ConfigParametros($stateProvider, $urlRouterProvider) {\r\n $urlRouterProviderRef = $urlRouterProvider;\r\n $stateProviderRef = $stateProvider;\r\n }\r\n\r\n function RunParametros() {\r\n $stateProviderRef.state('fornecedor.conta-corrente.saldo-contrato', {\r\n url: '/saldo-contrato',\r\n params: {\r\n 'contrato': null,\r\n 'codigoFornecedor': null,\r\n 'codigoNucleo': null,\r\n 'codigoProduto': null,\r\n 'anoSafra': null\r\n },\r\n templateUrl: 'app/modules/fornecedor/submodules/conta-corrente/submodules/saldo-contrato/view/saldo-contrato.view.html',\r\n controller: 'FornecedorContaCorrenteSaldoContratoController',\r\n controllerAs: 'vm',\r\n });\r\n }\r\n})();","(function() {\r\n\r\n angular\r\n .module('bunge.modules.fornecedor.conta-corrente.fixacao')\r\n .controller('FornecedorContaCorrenteFixacaoController', FornecedorContaCorrenteFixacaoController);\r\n\r\n FornecedorContaCorrenteFixacaoController.$inject = ['KendoDataSourceFactory', '$stateParams', 'ContaCorrenteParamsFactory', 'HelperFactory'];\r\n\r\n function FornecedorContaCorrenteFixacaoController(KendoDataSourceFactory, $stateParams, ContaCorrenteParamsFactory, HelperFactory) {\r\n\r\n var vm = this;\r\n\r\n vm.paramsGridOptions = function(dataItem) {\r\n var dataSourceParams = {\r\n endpoint: 'ContratoFixacao',\r\n fornecedor: true,\r\n pageable: false,\r\n pageSize: 999,\r\n sort: {\r\n field: \"ContratoCompraMTP\",\r\n dir: \"asc\"\r\n },\r\n header: ContaCorrenteParamsFactory.getHeader($stateParams)\r\n }\r\n\r\n var ds = KendoDataSourceFactory.iniciar(dataSourceParams);\r\n ds.$adicionarCampoModelo(\"DataFixacao\", { type: \"date\" });\r\n ds.$adicionarCampoModelo(\"NumeroFixacao\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadeFixada\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadeFixadaReal\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadeFixadaDolar\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"Preco\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorFixacao\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorImposto\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorAtencipado\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorSaldo\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorFixacaoDolar\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorFixacaoReal\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorImpostoDolar\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorImpostoReal\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorAtencipadoDolar\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorAtencipadoReal\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorSaldoDolar\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorSaldoReal\", { type: \"number\" });\r\n\r\n ds.$adicionarCampoAggregate(\"QuantidadeFixada\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"QuantidadeFixadaReal\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"QuantidadeFixadaDolar\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorFixacao\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorImposto\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorAtencipado\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorSaldo\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorFixacaoDolar\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorFixacaoReal\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorImpostoDolar\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorImpostoReal\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorAtencipadoDolar\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorAtencipadoReal\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorSaldoDolar\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorSaldoReal\", \"sum\");\r\n\r\n return {\r\n resizable: true,\r\n filterable: true,\r\n sortable: true,\r\n columnMenu: true,\r\n page: 1,\r\n dataSource: ds.$gerarDataSource(),\r\n excel: {\r\n allPages: false,\r\n fileName: 'Fixações.csv'\r\n },\r\n toolbar: [{\r\n name: 'excel',\r\n template: \"Gerar Excel\"\r\n }],\r\n dataBound: function(e) {\r\n HelperFactory.mergeFooterTemplate(e, 0, 3);\r\n HelperFactory.moveGridToolbarToFooter(\"#gridFixacoes\");\r\n var tfooter = e.sender.footer[0];\r\n var trFooterClone = e.sender.footer[0].childNodes[0].cloneNode(true);\r\n var firstDataItem = e.sender._data[0];\r\n trFooterClone.childNodes[0].innerHTML = 'TOTAL US$';\r\n\r\n try {\r\n somaQuantidadeFixadaDolar = e.sender.dataSource._aggregateResult.QuantidadeFixadaDolar.sum;\r\n somaValorFixacaoDolar = e.sender.dataSource._aggregateResult.ValorFixacaoDolar.sum;\r\n somaValorImpostoDolar = e.sender.dataSource._aggregateResult.ValorImpostoDolar.sum;\r\n somaValorAtencipado = e.sender.dataSource._aggregateResult.ValorAtencipadoDolar.sum;\r\n somaValorSaldo = e.sender.dataSource._aggregateResult.ValorSaldoDolar.sum;\r\n trFooterClone.childNodes[1].innerHTML = kendo.toString(somaQuantidadeFixadaDolar, 'n0');\r\n trFooterClone.childNodes[4].innerHTML = kendo.toString(somaValorFixacaoDolar, 'n2');\r\n trFooterClone.childNodes[5].innerHTML = kendo.toString(somaValorImpostoDolar, 'n2');\r\n trFooterClone.childNodes[6].innerHTML = kendo.toString(somaValorAtencipado, 'n2');\r\n trFooterClone.childNodes[7].innerHTML = kendo.toString(somaValorSaldo, 'n2');\r\n } catch (error) {\r\n trFooterClone.childNodes[1].innerHTML = '0';\r\n trFooterClone.childNodes[4].innerHTML = '0';\r\n trFooterClone.childNodes[5].innerHTML = '0';\r\n trFooterClone.childNodes[6].innerHTML = '0';\r\n trFooterClone.childNodes[7].innerHTML = '0';\r\n }\r\n tfooter.append(trFooterClone);\r\n },\r\n columns: [{\r\n title: 'Contrato',\r\n field: 'ContratoCompraMTP',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n footerTemplate: \"TOTAL R$\",\r\n footerAttributes: { style: \"text-align: center\" }\r\n },\r\n {\r\n title: 'Nro. Fixação',\r\n field: 'NumeroFixacao',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" }\r\n },\r\n {\r\n title: 'Data',\r\n field: 'DataFixacao',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n template: '#= kendo.toString(kendo.parseDate(data.DataFixacao,\"yyyy-MM-ddTHH:mm:ss\"),\"dd/MM/yyyy\")#'\r\n },\r\n {\r\n title: \"Qtd. Fixada (kg)\",\r\n field: 'QuantidadeFixada',\r\n aggregates: [\"sum\"],\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.QuantidadeFixada) {# #=kendo.toString (data.QuantidadeFixada,'n0')# #}else{#0#}#\",\r\n footerTemplate: function(data) {\r\n return data.QuantidadeFixadaReal && data.QuantidadeFixadaReal.sum ? kendo.toString(data.QuantidadeFixadaReal.sum, 'n0') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" },\r\n },\r\n {\r\n title: 'Preço',\r\n field: 'Preco',\r\n template: \"#if(data.Preco) {# #=kendo.toString (data.Preco,'n2')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" }\r\n },\r\n {\r\n title: 'Moeda',\r\n field: 'Moeda',\r\n headerAttributes: { style: \"text-align: center\" }\r\n },\r\n {\r\n title: 'Valor Fixação',\r\n field: 'ValorFixacao',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.ValorFixacao) {# #=kendo.toString (data.ValorFixacao,'n2')# #}else{#0#}#\",\r\n footerTemplate: function(data) {\r\n return data.ValorFixacaoReal && data.ValorFixacaoReal.sum ? kendo.toString(data.ValorFixacaoReal.sum, 'n2') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" }\r\n },\r\n {\r\n title: 'Impostos',\r\n field: 'ValorImposto',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.ValorImposto) {# #=kendo.toString (data.ValorImposto,'n2')# #}else{#0#}#\",\r\n footerTemplate: function(data) {\r\n return data.ValorImpostoReal && data.ValorImpostoReal.sum ? kendo.toString(data.ValorImpostoReal.sum, 'n2') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" }\r\n },\r\n {\r\n title: 'Antecipados',\r\n field: 'ValorAtencipado',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.ValorAtencipado) {# #=kendo.toString (data.ValorAtencipado,'n2')# #}else{#0#}#\",\r\n footerTemplate: function(data) {\r\n return data.ValorAtencipadoReal && data.ValorAtencipadoReal.sum ? kendo.toString(data.ValorAtencipadoReal.sum, 'n2') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" }\r\n },\r\n {\r\n title: 'Saldo',\r\n field: 'ValorSaldo',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.ValorSaldo) {# #=kendo.toString (data.ValorSaldo,'n2')# #}else{#0#}#\",\r\n footerTemplate: function(data) {\r\n return data.ValorSaldoReal && data.ValorSaldoReal.sum ? kendo.toString(data.ValorSaldoReal.sum, 'n2') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" }\r\n }\r\n ],\r\n }\r\n };\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.modules.fornecedor.conta-corrente.nota-fiscal')\r\n .directive('modalDetalheNota', ModalDetalheNota);\r\n\r\n function ModalDetalheNota() {\r\n return {\r\n restrict: 'EA',\r\n transclude: true,\r\n scope: {\r\n model: \"=\",\r\n onRemove: \"&\"\r\n },\r\n controller: ['$uibModal', '$scope', '$uibModalStack', 'HelperFactory', 'Flash', '$http', 'ENDPOINT_URI', 'KendoDataSourceFactory', ModalDetalheNotaController]\r\n };\r\n }\r\n\r\n function ModalDetalheNotaController($uibModal, $scope, $uibModalStack, HelperFactory, Flash, $http, ENDPOINT_URI, KendoDataSourceFactory) {\r\n function iniciar() {\r\n Flash.clear();\r\n\r\n var ds = KendoDataSourceFactory.iniciar({\r\n endpoint: 'NotaFiscalFornecedor',\r\n fornecedor: true,\r\n pageable: false,\r\n pageSize: 999,\r\n sort: { field: \"CodigoNotaFiscal\", dir: \"asc\" },\r\n header: $scope.model.header\r\n });\r\n\r\n ds.$adicionarCampoModelo(\"DataEmissao\", { type: \"date\" });\r\n ds.$adicionarCampoModelo(\"PesoNota\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"Preco\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorTotalNota\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorTotalNota\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorContribuicaoSocial\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorFethabFund\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorIcms\", { type: \"number\" });\r\n\r\n\r\n ds.$adicionarCampoAggregate(\"PesoNota\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorTotalNota\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorContribuicaoSocial\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorFethabFund\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorIcms\", \"sum\");\r\n\r\n $scope.paramsGridOptions = {\r\n resizable: true,\r\n filterable: true,\r\n sortable: true,\r\n columnMenu: true,\r\n dataSource: ds.$gerarDataSource(),\r\n dataBound: function(e) {\r\n HelperFactory.mergeFooterTemplate(e, 0, 6);\r\n HelperFactory.moveGridToolbarToFooter(\"#gridDetalheNota\");\r\n },\r\n excel: {\r\n allPages: false,\r\n fileName: 'Nota Fiscal - Detalhe.csv'\r\n },\r\n toolbar: [{\r\n name: 'voltar',\r\n template: ''\r\n }, {\r\n name: 'excel',\r\n template: \"\"\r\n }],\r\n columns: [{\r\n title: 'NF',\r\n field: 'NumeroNota',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n footerTemplate: \"TOTAL\",\r\n footerAttributes: { style: \"text-align: center\" }\r\n },\r\n {\r\n title: 'Serie',\r\n field: 'SerieNota',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" }\r\n },\r\n {\r\n title: 'Nota Bunge',\r\n field: 'NumeroNotaBunge',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" }\r\n },\r\n {\r\n title: 'Serie Bunge',\r\n field: 'SerieNotaBunge',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" }\r\n },\r\n {\r\n title: 'Data',\r\n field: 'DataEmissao',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n template: '#= kendo.toString(kendo.parseDate(data.DataEmissao,\"yyyy-MM-ddTHH:mm:ss\"),\"dd/MM/yyyy\")#'\r\n },\r\n {\r\n title: 'Tipo',\r\n field: 'TipoNota',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" }\r\n },\r\n {\r\n title: 'Peso (kg)',\r\n field: 'PesoNota',\r\n aggregates: [\"sum\"],\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.PesoNota) {# #=kendo.toString (data.PesoNota,'n0')# #}else{#0#}#\",\r\n footerTemplate: function(data) {\r\n return data.PesoNota && data.PesoNota.sum ? kendo.toString(data.PesoNota.sum, 'n0') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" }\r\n },\r\n {\r\n title: 'Preço R$',\r\n field: 'Preco',\r\n template: \"#if(data.Preco) {# #=kendo.toString (data.Preco,'n2')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" }\r\n },\r\n {\r\n title: 'Valor R$',\r\n field: 'ValorTotalNota',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.ValorTotalNota) {# #=kendo.toString (data.ValorTotalNota,'n2')# #}else{#0#}#\",\r\n footerTemplate: function(data) {\r\n return data.ValorTotalNota && data.ValorTotalNota.sum ? kendo.toString(data.ValorTotalNota.sum, 'n2') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" }\r\n },\r\n {\r\n title: 'Contra. Social R$',\r\n field: 'ValorContribuicaoSocial',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.ValorContribuicaoSocial) {# #=kendo.toString (data.ValorContribuicaoSocial,'n2')# #}else{#0#}#\",\r\n footerTemplate: function(data) {\r\n return data.ValorContribuicaoSocial && data.ValorContribuicaoSocial.sum ? kendo.toString(data.ValorContribuicaoSocial.sum, 'n2') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" }\r\n },\r\n {\r\n title: 'FETHAB/FUND. R$',\r\n field: 'ValorFethabFund',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.ValorFethabFund) {# #=kendo.toString (data.ValorFethabFund,'n2')# #}else{#0#}#\",\r\n footerTemplate: function(data) {\r\n return data.ValorFethabFund && data.ValorFethabFund.sum ? kendo.toString(data.ValorFethabFund.sum, 'n2') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" }\r\n },\r\n {\r\n title: 'ICMS R$',\r\n field: 'ValorIcms',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.ValorIcms) {# #=kendo.toString (data.ValorIcms,'n2')# #}else{#0#}#\",\r\n footerTemplate: function(data) {\r\n return data.ValorIcms && data.ValorIcms.sum ? kendo.toString(data.ValorIcms.sum, 'n2') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" }\r\n },\r\n {\r\n title: 'TRANSG.',\r\n field: 'Gmo'\r\n },\r\n {\r\n title: 'OP',\r\n field: 'NumeroCfop',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" }\r\n }\r\n ]\r\n };\r\n }\r\n\r\n iniciar();\r\n\r\n $scope.close = function() {\r\n $uibModalStack.dismissAll();\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n animation: true,\r\n scope: $scope,\r\n size: 'lg',\r\n windowClass: 'modal-xl',\r\n templateUrl: 'app/modules/fornecedor/submodules/conta-corrente/submodules/nota-fiscal/modals/modal-detalhe-nota.template.html'\r\n });\r\n\r\n modalInstance.result.then(function(selectedItem) {}, function() {\r\n $scope.onRemove();\r\n });\r\n }\r\n})();","(function() {\r\n\r\n angular\r\n .module('bunge.modules.fornecedor.conta-corrente.nota-fiscal')\r\n .controller('FornecedorContaCorrenteNotaFiscalController', FornecedorContaCorrenteNotaFiscalController);\r\n\r\n FornecedorContaCorrenteNotaFiscalController.$inject = ['KendoDataSourceFactory', '$stateParams', 'ContaCorrenteParamsFactory', 'HelperFactory'];\r\n\r\n function FornecedorContaCorrenteNotaFiscalController(KendoDataSourceFactory, $stateParams, ContaCorrenteParamsFactory, HelperFactory) {\r\n\r\n var vm = this;\r\n\r\n vm.paramsGridOptions = function(dataItem) {\r\n var dataSourceParams = {\r\n endpoint: 'NotaFiscalAgrupadaFornecedor',\r\n fornecedor: true,\r\n pageable: false,\r\n pageSize: 999,\r\n sort: {\r\n field: \"NomeFornecedor\",\r\n dir: \"asc\"\r\n },\r\n header: ContaCorrenteParamsFactory.getHeader($stateParams)\r\n }\r\n\r\n var ds = KendoDataSourceFactory.iniciar(dataSourceParams);\r\n ds.$adicionarCampoModelo(\"QuantidadeEntregue\", { type: \"number\" });\r\n ds.$adicionarCampoAggregate(\"QuantidadeEntregue\", \"sum\");\r\n\r\n return {\r\n resizable: true,\r\n filterable: true,\r\n sortable: true,\r\n columnMenu: true,\r\n dataSource: ds.$gerarDataSource(),\r\n excel: {\r\n allPages: false,\r\n fileName: 'Nota Fiscal.csv'\r\n },\r\n toolbar: [{\r\n name: 'excel',\r\n template: \"Gerar Excel\"\r\n }],\r\n dataBound: function(e) {\r\n HelperFactory.mergeFooterTemplate(e, 0, 2);\r\n HelperFactory.moveGridToolbarToFooter(\"#gridNotaFiscal\");\r\n },\r\n columns: [{\r\n command: [{\r\n template: ''\r\n }],\r\n title: \"Ações\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n footerTemplate: \"TOTAL\",\r\n footerAttributes: { style: \"text-align: center\" }\r\n },\r\n {\r\n title: \"Fornecedor\",\r\n field: 'NomeFornecedor',\r\n footerTemplate: \"Total\",\r\n footerAttributes: { style: \"text-align: center\" },\r\n },\r\n {\r\n title: \"Qtd. Entregue (kg)\",\r\n field: 'QuantidadeEntregue',\r\n aggregates: [\"sum\"],\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.QuantidadeEntregue) {# #=kendo.toString (data.QuantidadeEntregue,'n0')# #}else{#0#}#\",\r\n footerTemplate: function(data) {\r\n return data.QuantidadeEntregue && data.QuantidadeEntregue.sum ? kendo.toString(data.QuantidadeEntregue.sum, 'n0') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" },\r\n }\r\n ],\r\n }\r\n };\r\n\r\n\r\n vm.abrirDetalhe = function(dataItem) {\r\n var headerParams = ContaCorrenteParamsFactory.getHeader($stateParams);\r\n headerParams[\"OData.CodigoFilialEntrega\"] = dataItem.CodigoFornecedor;\r\n\r\n vm.notaFiscalDetalhe = [];\r\n vm.notaFiscalDetalhe.push({ header: headerParams });\r\n };\r\n\r\n }\r\n})();","(function() {\r\n\r\n angular\r\n .module('bunge.modules.fornecedor.conta-corrente.pagamento')\r\n .controller('FornecedorContaCorrentePagamentoController', FornecedorContaCorrentePagamentoController);\r\n\r\n FornecedorContaCorrentePagamentoController.$inject = ['KendoDataSourceFactory', '$stateParams', 'ContaCorrenteParamsFactory', 'HelperFactory'];\r\n\r\n function FornecedorContaCorrentePagamentoController(KendoDataSourceFactory, $stateParams, ContaCorrenteParamsFactory, HelperFactory) {\r\n\r\n var vm = this;\r\n\r\n vm.paramsGridOptions = function(dataItem) {\r\n var dataSourceParams = {\r\n endpoint: 'ContratoPagamento',\r\n fornecedor: true,\r\n pageable: false,\r\n pageSize: 999,\r\n sort: {\r\n field: \"ValorCotacao\",\r\n dir: \"asc\"\r\n },\r\n header: ContaCorrenteParamsFactory.getHeader($stateParams)\r\n }\r\n\r\n var ds = KendoDataSourceFactory.iniciar(dataSourceParams);\r\n ds.$adicionarCampoModelo(\"DataPagamento\", { type: \"date\" });\r\n ds.$adicionarCampoModelo(\"ValorCotacao\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorPagamento\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorProgramado\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorProgramadoReal\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorProgramadoDolar\", { type: \"number\" });\r\n\r\n ds.$adicionarCampoAggregate(\"ValorPagamento\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorProgramadoReal\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ValorProgramadoDolar\", \"sum\");\r\n\r\n return {\r\n resizable: true,\r\n filterable: true,\r\n sortable: true,\r\n columnMenu: true,\r\n dataSource: ds.$gerarDataSource(),\r\n excel: {\r\n allPages: false,\r\n fileName: 'Pagamentos.csv'\r\n },\r\n toolbar: [{\r\n name: 'excel',\r\n template: \"Gerar Excel\"\r\n }],\r\n dataBound: function(e) {\r\n HelperFactory.mergeFooterTemplate(e, 0, 3);\r\n HelperFactory.moveGridToolbarToFooter(\"#gridPagamento\");\r\n var tfooter = e.sender.footer[0];\r\n var trFooterClone = e.sender.footer[0].childNodes[0].cloneNode(true);\r\n var firstDataItem = e.sender._data[0];\r\n trFooterClone.childNodes[0].innerHTML = 'TOTAL US$';\r\n trFooterClone.childNodes[3].innerHTML = '';\r\n\r\n try {\r\n ValorProgramadoDolar = e.sender.dataSource._aggregateResult.ValorProgramadoDolar.sum;\r\n trFooterClone.childNodes[1].innerHTML = kendo.toString(ValorProgramadoDolar, 'n2');\r\n } catch (error) {\r\n trFooterClone.childNodes[1].innerHTML = '0';\r\n }\r\n tfooter.append(trFooterClone);\r\n },\r\n columns: [{\r\n title: 'Situação',\r\n field: 'SituacaoPagamento',\r\n footerTemplate: \"TOTAL R$\",\r\n footerAttributes: { style: \"text-align: center\" }\r\n },\r\n {\r\n title: 'Data Pagamento',\r\n field: 'DataPagamento',\r\n // template: '#= kendo.toString(kendo.parseDate(data.DataPagamento,\"yyyy-MM-ddTHH:mm:ss\"),\"dd/MM/yyyy\")#',\r\n template: '#if(data.DataPagamento) {# #= kendo.toString(kendo.parseDate(data.DataPagamento,\"yyyy-MM-ddTHH:mm:ss\"),\"dd/MM/yyyy\")# #}#',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" }\r\n },\r\n {\r\n title: 'Moeda',\r\n field: 'MoedaProgramado',\r\n attributes: { style: 'text-align: center' }\r\n },\r\n {\r\n title: 'Valor da Moeda',\r\n field: 'ValorProgramado',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.ValorProgramado) {# #=kendo.toString (data.ValorProgramado,'n2')# #}else{#0#}#\",\r\n footerTemplate: function(data) {\r\n return data.ValorProgramadoReal && data.ValorProgramadoReal.sum ? kendo.toString(data.ValorProgramadoReal.sum, 'n2') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" }\r\n },\r\n {\r\n title: 'Cotação US$',\r\n field: 'ValorCotacao',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.ValorCotacao) {# #=kendo.toString (data.ValorCotacao,'n3')# #}else{#0#}#\"\r\n },\r\n {\r\n title: 'Valor Pagamento R$',\r\n field: 'ValorPagamento',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.ValorPagamento) {# #=kendo.toString (data.ValorPagamento,'n2')# #}else{#0#}#\",\r\n footerTemplate: function(data) {\r\n return data.ValorPagamento && data.ValorPagamento.sum ? kendo.toString(data.ValorPagamento.sum, 'n2') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" }\r\n },\r\n {\r\n title: 'Banco',\r\n field: 'Banco'\r\n },\r\n {\r\n title: 'Agência',\r\n field: 'Agencia',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" }\r\n },\r\n {\r\n title: 'Conta Corrente',\r\n field: 'ContaCorrente',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" }\r\n },\r\n {\r\n title: 'Favorecido',\r\n field: 'NomeFavorecido'\r\n },\r\n {\r\n title: 'Contrato',\r\n field: 'ContratoCompraMTP',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" }\r\n },\r\n {\r\n title: 'Filial Pagto.',\r\n field: 'CodigoFilial',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" }\r\n },\r\n {\r\n title: 'Nr. Pagamento',\r\n field: 'NumeroPagamento',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" }\r\n }\r\n ],\r\n }\r\n };\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.modules.fornecedor.conta-corrente.recebimentos')\r\n .directive('modalDetalheRecebimento', function () {\r\n return {\r\n restrict: 'EA',\r\n transclude: true,\r\n scope: {\r\n model: \"=\",\r\n onRemove: \"&\"\r\n },\r\n controller: ['$uibModal', '$scope', '$uibModalStack', 'HelperFactory', 'Flash', '$http', 'ENDPOINT_URI', 'KendoDataSourceFactory', function ($uibModal, $scope, $uibModalStack, HelperFactory, Flash, $http, ENDPOINT_URI, KendoDataSourceFactory) {\r\n function iniciar() {\r\n Flash.clear();\r\n\r\n var ds = KendoDataSourceFactory.iniciar({\r\n endpoint: 'ContratoRecebimentos',\r\n fornecedor: true,\r\n pageable: false,\r\n pageSize: 999,\r\n sort: { field: \"ContratoCompraMTP\", dir: \"desc\" },\r\n header: $scope.model.header\r\n });\r\n\r\n ds.$adicionarCampoModelo(\"QuantidadePesoLiquidoOrigem\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadePesoBruto\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadePesoTara\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadePesoLiquidoDestino\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"PercentualClassificacaoUmidadeDestino\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"PercentualClassificacaoImpurezaDestino\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"PercentualClassificacaoDeterioracaoDestino\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"PercentualClassificacaoEsverdeadoDestino\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadePesoLiquidoFinal\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"CodigoControleEntradaGtm\", { type: \"number\" });\r\n\r\n ds.$adicionarCampoAggregate(\"QuantidadePesoLiquidoOrigem\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"QuantidadePesoLiquidoDestino\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"PercentualClassificacaoUmidadeDestino\", \"average\");\r\n\r\n ds.$adicionarCampoAggregate(\"ProporcaoUmidadeDesconto\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ProporcaoImpurezaDesconto\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ProporcaoDeterioracaoDesconto\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ProporcaoEsverdeadoDesconto\", \"sum\");\r\n\r\n ds.$adicionarCampoAggregate(\"PercentualClassificacaoImpurezaDestino\", \"average\");\r\n ds.$adicionarCampoAggregate(\"PercentualClassificacaoDeterioracaoDestino\", \"average\");\r\n ds.$adicionarCampoAggregate(\"PercentualClassificacaoEsverdeadoDestino\", \"average\");\r\n ds.$adicionarCampoAggregate(\"QuantidadePesoLiquidoFinal\", \"sum\");\r\n\r\n $scope.paramsGridPrazosEntregaOptions = {\r\n resizable: true,\r\n filterable: true,\r\n sortable: true,\r\n columnMenu: true,\r\n dataSource: ds.$gerarDataSource(),\r\n dataBound: function (e) {\r\n HelperFactory.mergeFooterTemplate(e, 0, 5);\r\n HelperFactory.moveGridToolbarToFooter(\"#gridDetalheRecebimento\");\r\n },\r\n excel: {\r\n allPages: false,\r\n fileName: 'Recibimentos - Detalhe.csv'\r\n },\r\n toolbar: [{\r\n name: 'voltar',\r\n template: ''\r\n }, {\r\n name: 'excel',\r\n template: \"\"\r\n }],\r\n columns: [{\r\n title: 'Contrato',\r\n field: 'ContratoCompraMTP',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n footerAttributes: { style: \"text-align: center\" },\r\n footerTemplate: \"TOTAL\"\r\n },\r\n {\r\n title: 'Recebimento',\r\n field: 'CodigoControleEntradaGtm',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n },\r\n {\r\n title: 'Data Entrega',\r\n field: 'DataControleEntradaGtm',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n template: '#= kendo.toString(kendo.parseDate(data.DataControleEntradaGtm,\"yyyy-MM-ddTHH:mm:ss\"),\"dd/MM/yyyy\")#'\r\n },\r\n {\r\n title: 'Frete',\r\n field: 'DescricaoFrete',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n },\r\n {\r\n title: 'Placa',\r\n field: 'CodigoPlacaVeculo',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n },\r\n {\r\n title: \"Peso Origem Líquido (kg)\",\r\n field: 'QuantidadePesoLiquidoOrigem',\r\n aggregates: [\"sum\"],\r\n template: \"#if(data.QuantidadePesoLiquidoOrigem) {# #=kendo.toString(data.QuantidadePesoLiquidoOrigem, 'n0')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n footerTemplate: function (data) {\r\n return data.QuantidadePesoLiquidoOrigem && data.QuantidadePesoLiquidoOrigem.sum ? kendo.toString(data.QuantidadePesoLiquidoOrigem.sum, 'n0') : 0\r\n }\r\n },\r\n {\r\n title: \"Peso Destino (kg)\",\r\n headerAttributes: { style: \"text-align: center; border-right-color: rgb(204, 204, 204) !important;border-right-style: solid !important;border-right-width: 1px !important;border-collapse: separate !important;\" },\r\n attributes: { style: \"text-align: right\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n columns: [{\r\n title: \"Bruto\",\r\n field: 'QuantidadePesoBruto',\r\n aggregates: [\"sum\"],\r\n template: \"#if(data.QuantidadePesoBruto) {# #=kendo.toString(data.QuantidadePesoBruto, 'n0')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n },\r\n {\r\n title: \"Tara\",\r\n field: 'QuantidadePesoTara',\r\n aggregates: [\"sum\"],\r\n template: \"#if(data.QuantidadePesoTara) {# #=kendo.toString(data.QuantidadePesoTara, 'n0')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n },\r\n {\r\n title: \"Liquido\",\r\n field: 'QuantidadePesoLiquidoDestino',\r\n aggregates: [\"sum\"],\r\n template: \"#if(data.QuantidadePesoLiquidoDestino) {# #=kendo.toString(data.QuantidadePesoLiquidoDestino, 'n0')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n footerTemplate: function (data) {\r\n return data.QuantidadePesoLiquidoDestino && data.QuantidadePesoLiquidoDestino.sum ? kendo.toString(data.QuantidadePesoLiquidoDestino.sum, 'n0') : 0\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n title: \"Classificação\",\r\n headerAttributes: { style: \"text-align: center; border-right-color: rgb(204, 204, 204) !important;border-right-style: solid !important;border-right-width: 1px !important;border-collapse: separate !important;\" },\r\n attributes: { style: \"text-align: right\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n columns: [{\r\n title: \"%Umid\",\r\n field: 'PercentualClassificacaoUmidadeDestino',\r\n aggregates: [\"sum\"],\r\n template: \"#if(data.PercentualClassificacaoUmidadeDestino) {# #=kendo.toString(data.PercentualClassificacaoUmidadeDestino, 'n2')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n footerTemplate: function (data) {\r\n var media = data.ProporcaoUmidadeDesconto.sum / data.QuantidadePesoLiquidoDestino.sum;\r\n return media ? kendo.toString(media, 'n2') : 0\r\n }\r\n },\r\n {\r\n title: \"%Imp\",\r\n field: 'PercentualClassificacaoImpurezaDestino',\r\n aggregates: [\"sum\"],\r\n template: \"#if(data.PercentualClassificacaoImpurezaDestino) {# #=kendo.toString(data.PercentualClassificacaoImpurezaDestino, 'n2')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n footerTemplate: function (data) {\r\n var media = data.ProporcaoImpurezaDesconto.sum / data.QuantidadePesoLiquidoDestino.sum;\r\n return media ? kendo.toString(media, 'n2') : 0\r\n }\r\n },\r\n {\r\n title: \"%Det\",\r\n field: 'PercentualClassificacaoDeterioracaoDestino',\r\n aggregates: [\"sum\"],\r\n template: \"#if(data.PercentualClassificacaoDeterioracaoDestino) {# #=kendo.toString(data.PercentualClassificacaoDeterioracaoDestino, 'n2')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n footerTemplate: function (data) {\r\n var media = data.ProporcaoDeterioracaoDesconto.sum / data.QuantidadePesoLiquidoDestino.sum;\r\n return media ? kendo.toString(media, 'n2') : 0\r\n }\r\n },\r\n {\r\n title: \"%Esv\",\r\n field: 'PercentualClassificacaoEsverdeadoDestino',\r\n aggregates: [\"sum\"],\r\n template: \"#if(data.PercentualClassificacaoEsverdeadoDestino) {# #=kendo.toString(data.PercentualClassificacaoEsverdeadoDestino, 'n2')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n footerTemplate: function (data) {\r\n var media = data.ProporcaoEsverdeadoDesconto.sum / data.QuantidadePesoLiquidoDestino.sum;\r\n return media ? kendo.toString(media, 'n2') : 0\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n title: \"Peso Líquido Final (kg)\",\r\n field: 'QuantidadePesoLiquidoFinal',\r\n aggregates: [\"sum\"],\r\n template: \"#if(data.QuantidadePesoLiquidoFinal) {# #=kendo.toString(data.QuantidadePesoLiquidoFinal, 'n0')# #}else{#0#}#\",\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n footerAttributes: { style: \"text-align: right\" },\r\n footerTemplate: function (data) {\r\n return data.QuantidadePesoLiquidoFinal && data.QuantidadePesoLiquidoFinal.sum ? kendo.toString(data.QuantidadePesoLiquidoFinal.sum, 'n0') : 0\r\n }\r\n }\r\n ]\r\n };\r\n\r\n };\r\n\r\n iniciar();\r\n\r\n $scope.close = function () {\r\n $uibModalStack.dismissAll();\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n animation: true,\r\n scope: $scope,\r\n size: 'lg',\r\n windowClass: 'modal-xl',\r\n templateUrl: 'app/modules/fornecedor/submodules/conta-corrente/submodules/recebimentos/modal-detalhe-recebimento/modal-detalhe-recebimento.template.html',\r\n });\r\n\r\n modalInstance.result.then(function (selectedItem) { }, function () {\r\n $scope.onRemove();\r\n });\r\n }],\r\n };\r\n });\r\n})();","(function () {\r\n\r\n angular\r\n .module('bunge.modules.fornecedor.conta-corrente.recebimentos')\r\n .controller('FornecedorContaCorrenteRecebimentosController', FornecedorContaCorrenteRecebimentosController);\r\n\r\n FornecedorContaCorrenteRecebimentosController.$inject = ['KendoDataSourceFactory', '$stateParams', 'HelperFactory', '$rootScope'];\r\n\r\n function FornecedorContaCorrenteRecebimentosController(KendoDataSourceFactory, $stateParams, HelperFactory, $rootScope) {\r\n\r\n var vm = this;\r\n\r\n vm.abrirDetalhe = function (dataItem) {\r\n vm.recebimentoDetalhe = [];\r\n vm.recebimentoDetalhe.push({\r\n header: {\r\n \"OData.CodigoFornecedor\": $stateParams['codigoFornecedor'],\r\n \"OData.CodigoNucleo\": $stateParams['codigoNucleo'],\r\n \"OData.CodigoProduto\": $stateParams['codigoProduto'],\r\n \"OData.TipoConsultaContrato\": $stateParams['tipoConsulta'],\r\n \"OData.Posicao\": $stateParams['posicao'],\r\n \"OData.ContratoCompraMtp\": $stateParams['contrato'] ? $stateParams['contrato'].ContratoCompraMTP : \"\",\r\n \"OData.CodigoEmpresa\": $stateParams['contrato'] ? $stateParams['contrato'].CodigoEmpresa : \"\",\r\n \"OData.CodigoFilial\": $stateParams['contrato'] ? $stateParams['contrato'].CodigoFilial : \"\",\r\n \"OData.AnoSafra\": !$stateParams['anoSafra'] || $stateParams['anoSafra'] == \"TODAS\" ? -1 : $stateParams['anoSafra'],\r\n \"OData.CodigoFilialEntrega\": dataItem.CodigoFilialEntrega,\r\n \"OData.ContratosSafra\": JSON.stringify($stateParams['contratosSafra'])\r\n }\r\n });\r\n };\r\n\r\n vm.paramsGridOptions = function (dataItem) {\r\n var ds = KendoDataSourceFactory.iniciar({\r\n endpoint: 'ContratoRecebimentosGrid',\r\n fornecedor: true,\r\n pageable: false,\r\n pageSize: 10000,\r\n sort: { field: \"NomeFilialEntrega\", dir: \"asc\" },\r\n header: {\r\n \"OData.CodigoFornecedor\": $stateParams['codigoFornecedor'],\r\n \"OData.CodigoNucleo\": $stateParams['codigoNucleo'],\r\n \"OData.CodigoProduto\": $stateParams['codigoProduto'],\r\n \"OData.TipoConsultaContrato\": $stateParams['tipoConsulta'],\r\n \"OData.Posicao\": $stateParams['posicao'],\r\n \"OData.ContratoCompraMtp\": $stateParams['contrato'] ? $stateParams['contrato'].ContratoCompraMTP : \"\",\r\n \"OData.CodigoEmpresa\": $stateParams['contrato'] ? $stateParams['contrato'].CodigoEmpresa : \"\",\r\n \"OData.CodigoFilial\": $stateParams['contrato'] ? $stateParams['contrato'].CodigoFilial : \"\",\r\n \"OData.AnoSafra\": !$stateParams['anoSafra'] || $stateParams['anoSafra'] == \"TODAS\" ? -1 : $stateParams['anoSafra'],\r\n \"OData.ContratosSafra\": JSON.stringify($stateParams['contratosSafra'])\r\n }\r\n });\r\n\r\n ds.$adicionarCampoModelo(\"QuantidadeUmidadeDesconto\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadeImpurezaDesconto\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadeDeterioracaoDesconto\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadeEsverdeadoDesconto\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"QuantidadePesoLiquidoDestino\", { type: \"number\" });\r\n\r\n ds.$adicionarCampoAggregate(\"QuantidadeUmidadeDesconto\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"QuantidadeImpurezaDesconto\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"QuantidadeDeterioracaoDesconto\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"QuantidadeEsverdeadoDesconto\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"QuantidadePesoLiquidoDestino\", \"sum\");\r\n\r\n ds.$adicionarCampoAggregate(\"ProporcaoUmidadeDesconto\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ProporcaoImpurezaDesconto\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ProporcaoDeterioracaoDesconto\", \"sum\");\r\n ds.$adicionarCampoAggregate(\"ProporcaoEsverdeadoDesconto\", \"sum\");\r\n\r\n return {\r\n resizable: true,\r\n filterable: true,\r\n sortable: true,\r\n columnMenu: true,\r\n dataSource: ds.$gerarDataSource(),\r\n dataBound: function (e) {\r\n HelperFactory.mergeFooterTemplate(e, 0, 2);\r\n HelperFactory.moveGridToolbarToFooter(\"#gridRecebimentos\");\r\n },\r\n excel: {\r\n allPages: false,\r\n fileName: 'Recebimentos.csv'\r\n },\r\n toolbar: [{\r\n name: 'excel',\r\n template: \"Gerar Excel\"\r\n }],\r\n columns: [{\r\n command: [{\r\n template: ''\r\n }],\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n title: \"Ações\",\r\n footerTemplate: \"TOTAL\",\r\n footerAttributes: { style: \"text-align: center\" }\r\n },\r\n {\r\n title: \"Local de Entrega\",\r\n field: 'NomeFilialEntrega',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" }\r\n }, {\r\n title: \"Peso Líquido Entregue (kg)\",\r\n field: 'QuantidadePesoLiquidoDestino',\r\n aggregates: [\"sum\"],\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.QuantidadePesoLiquidoDestino) {# #=kendo.toString (data.QuantidadePesoLiquidoDestino,'n0')# #}else{#0#}#\",\r\n footerTemplate: function (data) {\r\n return data.QuantidadePesoLiquidoDestino && data.QuantidadePesoLiquidoDestino.sum ? kendo.toString(data.QuantidadePesoLiquidoDestino.sum, 'n0') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" },\r\n }, {\r\n title: \"Umidade (kg)\",\r\n field: 'QuantidadeUmidadeDesconto',\r\n aggregates: [\"sum\"],\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.QuantidadeUmidadeDesconto) {# #=kendo.toString (data.QuantidadeUmidadeDesconto,'n0')# #}else{#0#}#\",\r\n footerTemplate: function (data) {\r\n var media = data.ProporcaoUmidadeDesconto.sum / data.QuantidadePesoLiquidoDestino.sum;\r\n return media ? kendo.toString(media, 'n2') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" },\r\n }, {\r\n title: \"Impureza (kg)\",\r\n field: 'QuantidadeImpurezaDesconto',\r\n aggregates: [\"sum\"],\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.QuantidadeImpurezaDesconto) {# #=kendo.toString (data.QuantidadeImpurezaDesconto,'n0')# #}else{#0#}#\",\r\n footerTemplate: function (data) {\r\n var media = data.ProporcaoImpurezaDesconto.sum / data.QuantidadePesoLiquidoDestino.sum;\r\n return media ? kendo.toString(media, 'n2') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" },\r\n }, {\r\n title: \"Deteriorado (kg)\",\r\n field: 'QuantidadeDeterioracaoDesconto',\r\n aggregates: [\"sum\"],\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.QuantidadeDeterioracaoDesconto) {# #=kendo.toString (data.QuantidadeDeterioracaoDesconto,'n0')# #}else{#0#}#\",\r\n footerTemplate: function (data) {\r\n var media = data.ProporcaoDeterioracaoDesconto.sum / data.QuantidadePesoLiquidoDestino.sum;\r\n return media ? kendo.toString(media, 'n2') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" },\r\n },\r\n {\r\n title: \"Esverdeado (kg)\",\r\n field: 'QuantidadeEsverdeadoDesconto',\r\n aggregates: [\"sum\"],\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.QuantidadeEsverdeadoDesconto) {# #=kendo.toString (data.QuantidadeEsverdeadoDesconto,'n0')# #}else{#0#}#\",\r\n footerTemplate: function (data) {\r\n var media = data.ProporcaoEsverdeadoDesconto.sum / data.QuantidadePesoLiquidoDestino.sum;\r\n return media ? kendo.toString(media, 'n2') : 0\r\n },\r\n footerAttributes: { style: \"text-align: right\" },\r\n }\r\n ],\r\n }\r\n };\r\n\r\n }\r\n})();","(function() {\r\n\r\n angular\r\n .module('bunge.modules.fornecedor.conta-corrente.saldo-contrato')\r\n .controller('FornecedorContaCorrenteSaldoContratoController', FornecedorContaCorrenteSaldoContratoController);\r\n\r\n FornecedorContaCorrenteSaldoContratoController.$inject = ['$state', '$stateParams', 'FOR_SALDO_TABS_CONSTANT'];\r\n\r\n function FornecedorContaCorrenteSaldoContratoController($state, $stateParams, FOR_SALDO_TABS_CONSTANT) {\r\n var vm = this;\r\n vm.tabData = [];\r\n vm.loadTabs = function() {\r\n for (var item in FOR_SALDO_TABS_CONSTANT) {\r\n var tabItem = FOR_SALDO_TABS_CONSTANT[item];\r\n\r\n var model = {\r\n heading: '

' + tabItem.legenda + '

',\r\n route: tabItem.route\r\n };\r\n vm.tabData.push(model);\r\n }\r\n $state.go(FOR_SALDO_TABS_CONSTANT[0].route, $stateParams);\r\n }\r\n vm.loadTabs();\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor.conta-corrente.saldo-contrato.detalhado', [])\r\n .config(['$stateProvider', '$urlRouterProvider', ConfigParametros])\r\n .run([RunParametros]);\r\n\r\n\r\n var $urlRouterProviderRef = null;\r\n var $stateProviderRef = null;\r\n\r\n function ConfigParametros($stateProvider, $urlRouterProvider) {\r\n $urlRouterProviderRef = $urlRouterProvider;\r\n $stateProviderRef = $stateProvider;\r\n }\r\n\r\n function RunParametros() {\r\n $stateProviderRef.state('fornecedor.conta-corrente.saldo-contrato.detalhado', {\r\n url: '/saldo-contrato-detalhado',\r\n params: {\r\n 'contrato': null,\r\n 'codigoFornecedor': null,\r\n 'codigoNucleo': null,\r\n 'codigoProduto': null,\r\n 'anoSafra': null\r\n },\r\n templateUrl: 'app/modules/fornecedor/submodules/conta-corrente/submodules/saldo-contrato/submodules/detalhado/view/detalhado.view.html',\r\n controller: 'FornecedorContaCorrenteSaldoContratoDetalhadoController',\r\n controllerAs: 'vm',\r\n });\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor.conta-corrente.saldo-contrato.resumido', [])\r\n .config(['$stateProvider', '$urlRouterProvider', ConfigParametros])\r\n .run([RunParametros]);\r\n\r\n\r\n var $urlRouterProviderRef = null;\r\n var $stateProviderRef = null;\r\n\r\n function ConfigParametros($stateProvider, $urlRouterProvider) {\r\n $urlRouterProviderRef = $urlRouterProvider;\r\n $stateProviderRef = $stateProvider;\r\n }\r\n\r\n function RunParametros() {\r\n $stateProviderRef.state('fornecedor.conta-corrente.saldo-contrato.resumido', {\r\n url: '/saldo-contrato-resumido',\r\n params: {\r\n 'contrato': null,\r\n 'codigoFornecedor': null,\r\n 'codigoNucleo': null,\r\n 'codigoProduto': null,\r\n 'anoSafra': null\r\n },\r\n templateUrl: 'app/modules/fornecedor/submodules/conta-corrente/submodules/saldo-contrato/submodules/resumido/view/resumido.view.html',\r\n controller: 'FornecedorContaCorrenteSaldoContratoResumidoController',\r\n controllerAs: 'vm',\r\n });\r\n }\r\n})();","(function() {\r\n\r\n angular\r\n .module('bunge.modules.fornecedor.conta-corrente.saldo-contrato.detalhado')\r\n .controller('FornecedorContaCorrenteSaldoContratoDetalhadoController', FornecedorContaCorrenteSaldoContratoDetalhadoController);\r\n\r\n FornecedorContaCorrenteSaldoContratoDetalhadoController.$inject = ['KendoDataSourceFactory', '$stateParams', 'ContaCorrenteParamsFactory', 'HelperFactory'];\r\n\r\n function FornecedorContaCorrenteSaldoContratoDetalhadoController(KendoDataSourceFactory, $stateParams, ContaCorrenteParamsFactory, HelperFactory) {\r\n\r\n var vm = this;\r\n\r\n vm.paramsGridOptions = function(dataItem) {\r\n\r\n var dataSourceParams = {\r\n endpoint: 'ContratoSaldo',\r\n fornecedor: true,\r\n pageable: false,\r\n pageSize: 999,\r\n sort: [{\r\n field: \"ContratoCompraMTP\",\r\n dir: \"asc\"\r\n },{\r\n field: \"DataLancamento\",\r\n dir: \"asc\"\r\n }],\r\n group: [{ \r\n field: 'ContratoCompraMTP', \r\n aggregates: [{\r\n field: 'ValorMoedaInterna', \r\n aggregate: 'sum'\r\n }]\r\n }],\r\n groupable: true,\r\n header: ContaCorrenteParamsFactory.getHeader($stateParams)\r\n };\r\n\r\n var ds = KendoDataSourceFactory.iniciar(dataSourceParams);\r\n ds.$adicionarCampoModelo(\"ValorMoedaInterna\", { type: \"number\" });\r\n ds.$adicionarCampoModelo(\"ValorTaxaCambio\", { type: \"number\" });\r\n \r\n ds.$adicionarCampoAggregate(\"ValorMoedaInterna\", \"sum\");\r\n\r\n return {\r\n resizable: true,\r\n filterable: true,\r\n sortable: true,\r\n columnMenu: true,\r\n dataSource: ds.$gerarDataSource(),\r\n excel: {\r\n allPages: false,\r\n fileName: 'SaldoContratos.csv'\r\n },\r\n toolbar: [{\r\n name: 'excel',\r\n template: \"Gerar Excel\"\r\n }],\r\n dataBound: function(e) {\r\n HelperFactory.mergeSubFooterTemplate(e, 1, 4);\r\n HelperFactory.mergeFooterTemplate(e, 1, 4);\r\n HelperFactory.moveGridToolbarToFooter(\"#gridDetalhado\");\r\n },\r\n columns: [\r\n {\r\n title: 'Contrato',\r\n field: 'ContratoCompraMTP',\r\n footerTemplate: \"SALDO\",\r\n footerAttributes: { style: \"text-align: center\" },\r\n groupFooterTemplate: \"SUBTOTAL\",\r\n },\r\n {\r\n title: 'Tipo',\r\n field: 'SubAgrupador'\r\n },\r\n {\r\n title: 'Cotação US$',\r\n field: 'ValorTaxaCambio',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: right\" },\r\n template: \"#if(data.ValorTaxaCambio) {# #=kendo.toString (data.ValorTaxaCambio,'n3')# #}else{#0#}#\"\r\n },\r\n {\r\n title: 'Data Entrega',\r\n field: 'DataLancamento',\r\n headerAttributes: { style: \"text-align: center\" },\r\n attributes: { style: \"text-align: center\" },\r\n template: '#= kendo.toString(kendo.parseDate(data.DataLancamento,\"yyyy-MM-ddTHH:mm:ss\"),\"dd/MM/yyyy\")#'\r\n },\r\n {\r\n title: 'Valor R$',\r\n field: 'ValorMoedaInterna',\r\n headerAttributes: { style: \"text-align: center\" },\r\n template: \"#if(data.ValorMoedaInterna) {# #=kendo.toString (data.ValorMoedaInterna,'n2')# #}else{#0#}#\",\r\n attributes: { style: \"#if(data.IdDebitoCredito == 'D') {# color: red; #}# text-align: right;\" },\r\n footerAttributes: { style: \"#if(data.ValorMoedaInterna.sum < 0) {# color: red; #}# text-align: right;\" },\r\n groupFooterAttributes: { style: \"#if(data.ValorMoedaInterna.sum < 0) {# color: red; #}# text-align: right;\" },\r\n groupFooterTemplate: function(data) {\r\n return data.ValorMoedaInterna && data.ValorMoedaInterna.sum ? kendo.toString(data.ValorMoedaInterna.sum, 'n2') : 0\r\n },\r\n footerTemplate: function(data) {\r\n return data.ValorMoedaInterna && data.ValorMoedaInterna.sum ? kendo.toString(data.ValorMoedaInterna.sum, 'n2') : 0;\r\n }\r\n },\r\n {\r\n title: 'D/C',\r\n field: 'IdDebitoCredito',\r\n attributes: { style: \"#if(data.IdDebitoCredito == 'D') {# color: red; #}#\" },\r\n }\r\n\r\n ]\r\n }\r\n };\r\n\r\n\r\n }\r\n})();","(function() {\r\n\r\n angular\r\n .module('bunge.modules.fornecedor.conta-corrente.saldo-contrato.resumido')\r\n .controller('FornecedorContaCorrenteSaldoContratoResumidoController', FornecedorContaCorrenteSaldoContratoResumidoController);\r\n\r\n FornecedorContaCorrenteSaldoContratoResumidoController.$inject = ['KendoDataSourceFactory', '$stateParams', 'ContaCorrenteParamsFactory', 'HelperFactory'];\r\n\r\n function FornecedorContaCorrenteSaldoContratoResumidoController(KendoDataSourceFactory, $stateParams, ContaCorrenteParamsFactory, HelperFactory) {\r\n\r\n var vm = this;\r\n\r\n vm.paramsGridOptions = function(dataItem) {\r\n\r\n var dataSourceParams = {\r\n endpoint: 'ContratoSaldoAgrupado',\r\n fornecedor: true,\r\n pageable: false,\r\n pageSize: 999,\r\n sort: {\r\n field: \"Agrupador\",\r\n dir: \"asc\"\r\n },\r\n header: ContaCorrenteParamsFactory.getHeader($stateParams)\r\n };\r\n\r\n var ds = KendoDataSourceFactory.iniciar(dataSourceParams);\r\n ds.$adicionarCampoModelo(\"ValorMoedaInterna\", { type: \"number\" });\r\n ds.$adicionarCampoAggregate(\"ValorMoedaInterna\", \"sum\");\r\n\r\n return {\r\n resizable: true,\r\n filterable: true,\r\n sortable: true,\r\n columnMenu: true,\r\n dataSource: ds.$gerarDataSource(),\r\n excel: {\r\n allPages: false,\r\n fileName: 'SaldoContratos.csv'\r\n },\r\n toolbar: [{\r\n name: 'excel',\r\n template: \"Gerar Excel\"\r\n }],\r\n dataBound: function(e) {\r\n HelperFactory.moveGridToolbarToFooter(\"#gridResumido\");\r\n },\r\n columns: [\r\n {\r\n title: 'Descrição',\r\n field: 'Agrupador',\r\n attributes: { style: \"#if(data.IdDebitoCredito == 'D') {# color: red; #}#\" },\r\n footerTemplate: \"SALDO\",\r\n footerAttributes: { style: \"text-align: center\" }\r\n },\r\n {\r\n title: 'Valor R$',\r\n field: 'ValorMoedaInterna',\r\n headerAttributes: { style: \"text-align: center\" },\r\n template: \"#if(data.ValorMoedaInterna) {# #=kendo.toString (data.ValorMoedaInterna,'n2')# #}else{#0#}#\",\r\n attributes: { style: \"#if(data.IdDebitoCredito == 'D') {# color: red; #}# text-align: right;\" },\r\n footerAttributes: { style: \"#if(data.ValorMoedaInterna.sum < 0) {# color: red; #}# text-align: right;\" },\r\n footerTemplate: function(data) {\r\n return data.ValorMoedaInterna && data.ValorMoedaInterna.sum ? kendo.toString(data.ValorMoedaInterna.sum, 'n2') : 0;\r\n }\r\n },\r\n {\r\n title: 'D/C',\r\n field: 'IdDebitoCredito',\r\n attributes: { style: \"#if(data.IdDebitoCredito == 'D') {# color: red; #}#\" },\r\n },\r\n\r\n ]\r\n }\r\n };\r\n\r\n\r\n }\r\n})();","(function () {\r\n\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.administracao', [\r\n \r\n ]);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.administracao')\r\n .config(['$stateProvider', ConfigAdministracao]);\r\n\r\n function ConfigAdministracao($stateProvider) {\r\n $stateProvider\r\n .state('administracao', {\r\n url: '/administracao',\r\n templateUrl: 'app/modules/administracao/view/administracao.view.html',\r\n controller: 'AdministracaoController',\r\n controllerAs: 'vm',\r\n resolve: { // Any property in resolve should return a promise and is executed before the view is loaded\r\n depsAdmin: ['DynamicModulesLoader', '$rootScope', 'ModulesLoaded', function (DynamicModulesLoader, $rootScope, ModulesLoaded) {\r\n // you can lazy load files for an existing module\r\n if (ModulesLoaded.GetLoaded()['administracao']) {\r\n return;\r\n }\r\n return DynamicModulesLoader.LoadModulesFromToken('administracao');\r\n\r\n }]\r\n }\r\n })\r\n }\r\n})();\r\n","if (window.location.pathname !== '/') {\r\n window.location.href = '/#' + window.location.pathname;\r\n}\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.administracao').controller('AdministracaoController', AdministracaoController);\r\n\r\n AdministracaoController.$inject = ['$rootScope', 'NavigationService', 'ViewService', 'VisibilidadeMenuLateralFactory'];\r\n function AdministracaoController($rootScope, NavigationService, ViewService, VisibilidadeMenuLateralFactory) {\r\n var vm = this;\r\n\r\n $rootScope.currentApp = ViewService.GetViewPublicKey('administracao');\r\n\r\n ViewService.GoToFirstView('administracao');\r\n\r\n if ($rootScope.navPermissions.length == 0)\r\n NavigationService.BuildUserMenu();\r\n\r\n vm.sideBarMenuVisivel = sideBarMenuVisivel;\r\n\r\n vm.expandir = expandir;\r\n\r\n function sideBarMenuVisivel() {\r\n return VisibilidadeMenuLateralFactory.getVisivel();\r\n };\r\n\r\n function expandir() {\r\n VisibilidadeMenuLateralFactory.setVisivel(false);\r\n };\r\n }\r\n\r\n})();","(function() {\r\n\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor', []);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor')\r\n .config(['$stateProvider', ConfigFornecedor]);\r\n\r\n function ConfigFornecedor($stateProvider) {\r\n $stateProvider\r\n .state('fornecedor', {\r\n url: '/fornecedor',\r\n templateUrl: 'app/modules/fornecedor/view/fornecedor.view.html',\r\n controller: 'FornecedorController',\r\n controllerAs: 'vm',\r\n resolve: { // Any property in resolve should return a promise and is executed before the view is loaded\r\n depsForn: ['DynamicModulesLoader', '$rootScope', 'ModulesLoaded', function (DynamicModulesLoader, $rootScope, ModulesLoaded) {\r\n // you can lazy load files for an existing module\r\n if (ModulesLoaded.GetLoaded()['fornecedor']) {\r\n return;\r\n }\r\n return DynamicModulesLoader.LoadModulesFromToken('fornecedor');\r\n\r\n }]\r\n }\r\n })\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge.modules.fornecedor').controller('FornecedorController', FornecedorController);\r\n\r\n FornecedorController.$inject = ['$rootScope', 'NavigationService', 'ViewService', 'VisibilidadeMenuLateralFactory'];\r\n function FornecedorController($rootScope, NavigationService, ViewService, VisibilidadeMenuLateralFactory) {\r\n var vm = this;\r\n\r\n $rootScope.currentApp = ViewService.GetViewPublicKey('fornecedor');\r\n\r\n ViewService.GoToFirstView('fornecedor');\r\n\r\n if ($rootScope.navPermissions.length == 0)\r\n NavigationService.BuildUserMenu();\r\n\r\n vm.sideBarMenuVisivel = sideBarMenuVisivel;\r\n\r\n vm.expandir = expandir;\r\n\r\n function sideBarMenuVisivel() {\r\n return VisibilidadeMenuLateralFactory.getVisivel();\r\n }\r\n\r\n function expandir() {\r\n VisibilidadeMenuLateralFactory.setVisivel(true);\r\n }\r\n }\r\n\r\n})();","(function () {\r\n\r\n 'use strict';\r\n\r\n angular.module('bunge.modules', [\r\n 'bunge.modules.alterar-email',\r\n 'bunge.modules.alterar-senha',\r\n 'bunge.modules.home',\r\n 'bunge.modules.login',\r\n 'bunge.modules.primeiro-acesso',\r\n 'bunge.modules.recuperar-acesso',\r\n // 'bunge.modules.registro-acesso',\r\n 'bunge.modules.administracao',\r\n 'bunge.modules.fornecedor',\r\n 'bunge.modules.configuracoes'\r\n\r\n ]);\r\n})();","(function () {\r\n 'use strict';\r\nangular.module('bunge.components', []);\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.components')\r\n .directive('admMobileOptions', ['Session', '$state', function ($rootScope, $state) {\r\n return {\r\n restrict: 'EA',\r\n templateUrl: '/app/components/administration-mobile-options/administration-mobile-options.template.html',\r\n replace: true,\r\n link: function (scope, element, attrs) {\r\n scope.options = $rootScope.admPermissions;\r\n var getIndexActive = function () {\r\n var z = 0;\r\n for (var i in scope.options) {\r\n if ($state.current.name == 'administracao' + scope.options[i].route) {\r\n return z;\r\n }\r\n z++;\r\n }\r\n return 0;\r\n };\r\n scope.toggleObject = { item: getIndexActive() };\r\n }\r\n };\r\n }]);\r\n})();\r\n\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('bunge.components').directive('admOptions', ADM_OPTIONS);\r\n\r\n\tADM_OPTIONS.$inject = ['NavigationService', 'Session', '$state', 'VisibilidadeMenuLateralFactory'];\r\n\r\n\tfunction ADM_OPTIONS(NavigationService, $rootScope, $state, VisibilidadeMenuLateralFactory) {\r\n\t\treturn {\r\n\t\t\trestrict: 'EA',\r\n\t\t\ttemplateUrl: '/app/components/administration-options/administration-options.template.html',\r\n\t\t\treplace: true,\r\n\t\t\tlink: function (scope, element, attrs) {\r\n\t\t\t var appName = attrs.page;\r\n\t\t\t setTimeout(function () { scope.options = NavigationService.GetUserSubMenu(appName); scope.$evalAsync(); }, 50);\r\n\t\t\t\t\r\n\r\n\t\t\t\tscope.retrair = retrair;\r\n\r\n\t\t\t\tfunction retrair() {\r\n\t\t\t\t VisibilidadeMenuLateralFactory.setVisivel(true);\r\n\t\t\t\t};\r\n\t\t\t\t\r\n\t\t\t\tvar getIndexActive = function () {\r\n\r\n\t\t\t\t if (!scope.options) {\r\n\t\t\t\t scope.options = NavigationService.GetUserSubMenu(appName);\r\n\t\t\t\t scope.$evalAsync();\r\n\t\t\t\t }\r\n\r\n\t\t\t\t\tvar z = 0;\r\n\t\t\t\t\t\r\n\t\t\t\t\tfor (var i in scope.options) {\r\n\t\t\t\t\t\tif ($state.current.name == 'administracao' + scope.options[i].route) {\r\n\t\t\t\t\t\t\treturn z;\r\n\t\t\t\t\t\t} else if (scope.options[i].subRoutes) {\r\n\t\t\t\t\t\t var contemSubRoute = false;\r\n\t\t\t\t\t\t scope.options[i].subRoutes.forEach(function (element, index, array) {\r\n\t\t\t\t\t\t if (!contemSubRoute && $state.current.name == 'administracao' + element) {\r\n\t\t\t\t\t\t contemSubRoute = true;\r\n\t\t\t\t\t\t }\r\n\t\t\t\t\t\t });\r\n\r\n\t\t\t\t\t\t if (contemSubRoute) {\r\n\t\t\t\t\t\t return z;\r\n\t\t\t\t\t\t }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tz++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t};\r\n\t\t\t\t\r\n\t\t\t\tscope.toggleObject = { item: getIndexActive() };\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n}());\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.components')\r\n .directive('currentPublicKey', ['Session', '$state', '$window', '$rootScope', function (Session, $state, $window, $rootScope) {\r\n\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element, attrs) {\r\n var publicKeyChange = function () {\r\n var publicKey = attrs.title;\r\n var currentLocation = $window.location.href;\r\n\r\n var appList = Session.GetAppsByName(attrs.app);\r\n for (var appIndex in appList) {\r\n var menu = appList[appIndex].menu;\r\n menu.forEach(function (value) {\r\n if (currentLocation.split('/')[4] == value.internalKey && value.showPublicKey) {\r\n publicKey = value.publicKey;\r\n }\r\n });\r\n } \r\n element.html(publicKey);\r\n }\r\n $rootScope.$on('$locationChangeSuccess', function (event, next, current) {\r\n publicKeyChange();\r\n });\r\n publicKeyChange();\r\n },\r\n };\r\n }]);\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.components')\r\n .directive('focus',\r\n function ($timeout) {\r\n return {\r\n scope: {\r\n trigger: '@focus'\r\n },\r\n link: function (scope, element) {\r\n scope.$watch('trigger', function (value) {\r\n if (value === \"true\") {\r\n $timeout(function () {\r\n element[0].focus();\r\n });\r\n }\r\n });\r\n }\r\n };\r\n });\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.components')\r\n .directive('email', function () {\r\n var EMAIL_REGEXP = /^[-_a-z0-9]+(\\.[_a-z0-9]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,4})$/;\r\n\r\n return {\r\n require: '?ngModel',\r\n link: function (scope, elm, attrs, ctrl) { \r\n if (ctrl && ctrl.$validators.email) {\r\n ctrl.$validators.email = function (modelValue) { \r\n return ctrl.$isEmpty(modelValue) || EMAIL_REGEXP.test(modelValue);\r\n };\r\n }\r\n }\r\n };\r\n});\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.components')\r\n .directive('pagFooter', function () {\r\n return {\r\n restrict: 'EA',\r\n templateUrl:'/app/components/footer/pagFooter.template.html',\r\n replace: true\r\n };\r\n });\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.components')\r\n .directive('pagHeader', ['$state', '$rootScope', '$compile', '$templateRequest', 'AuthenticationService', 'SIDEBAROPTS', '$window',\r\n function ($state, $rootScope, $compile, $templateRequest, AuthenticationService, SIDEBAROPTS, $window) {\r\n\r\n var getTemplateUrl = function () {\r\n var currentState = $rootScope.currentState ? $rootScope.currentState.name : $state.current.name;\r\n if (currentState == 'login') {\r\n return '/app/components/header/pagHeader.template.html';\r\n } else if (currentState == 'esqueci-minha-senha' || currentState == 'esqueci-minha-senha-chave') {\r\n return '/app/components/header/pagHeaderRecup.template.html';\r\n } else if (currentState == 'primeiro-acesso' || currentState == 'primeiro-acesso-chave') {\r\n return '/app/components/header/pagHeaderPrimeiroAcesso.template.html';\r\n } else {\r\n return '/app/components/header/pagHeaderLogado.template.html';\r\n }\r\n };\r\n\r\n var checkSideBarEnabled = function (scope) {\r\n scope.sideBarEnabled = false;\r\n if (!$state.current.name) {\r\n scope.sideBarEnabled = false;\r\n return false;\r\n }\r\n var currentState = $rootScope.currentState ? $rootScope.currentState.name : $state.current.name;\r\n for (var i in SIDEBAROPTS) {\r\n var regEx = new RegExp(SIDEBAROPTS[i]);\r\n if (regEx.test(currentState)) {\r\n scope.sideBarEnabled = true;\r\n }\r\n }\r\n };\r\n\r\n var linker = function (scope, element, attrs) {\r\n $rootScope.$on('$locationChangeSuccess', function (event, next, current) {\r\n $templateRequest(getTemplateUrl()).then(function (html) {\r\n var template = angular.element(html);\r\n element.html('');\r\n element.append(template);\r\n $compile(template)(scope);\r\n\r\n if ($rootScope.currentUser) {\r\n $rootScope.$evalAsync();\r\n scope.userName = $rootScope.currentUser.userSystemName;\r\n scope.userType = $rootScope.currentUser.userRole;\r\n }\r\n\r\n checkSideBarEnabled(scope);\r\n });\r\n });\r\n\r\n scope.showUserMenuContext = showUserMenuContext;\r\n\r\n function showUserMenuContext(){\r\n return scope.userType != 'Interno' && scope.userType != 'Root';\r\n };\r\n\r\n\r\n $rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\r\n $templateRequest(getTemplateUrl()).then(function (html) {\r\n var template = angular.element(html);\r\n element.html('');\r\n element.append(template);\r\n $compile(template)(scope);\r\n\r\n if ($rootScope.currentUser) {\r\n $rootScope.$evalAsync();\r\n scope.userName = $rootScope.currentUser.userSystemName;\r\n scope.userType = $rootScope.currentUser.userRole;\r\n }\r\n checkSideBarEnabled(scope);\r\n });\r\n });\r\n\r\n scope.logoff = function () {\r\n AuthenticationService.ClearCredentials();\r\n };\r\n\r\n scope.changeSideBar = function () {\r\n angular.element(document.querySelector('#wrapper')).toggleClass('toggled');\r\n angular.element(document.querySelector('.c-mask')).toggleClass('is-active');\r\n\r\n if (angular.element(document.querySelector('#wrapper')).hasClass('toggled')) {\r\n angular.element(document.querySelector('body')).css('overflow', 'hidden');\r\n $window.onclick = function (event) {\r\n closeSearchWhenClickingElsewhere(event, scope.changeSideBar);\r\n };\r\n } else {\r\n $window.onclick = null;\r\n angular.element(document.querySelector('body')).css('overflow', 'auto');\r\n }\r\n };\r\n\r\n function closeSearchWhenClickingElsewhere(event, callbackOnClose) {\r\n var clickedElement = event.target;\r\n if (!clickedElement) {\r\n return;\r\n }\r\n\r\n var elementClasses = clickedElement.classList;\r\n var clickedOnSearchDrawer = elementClasses.contains('glyphicon-th-large') || elementClasses.contains('navbar-toggle');\r\n\r\n if (!clickedOnSearchDrawer) {\r\n callbackOnClose();\r\n return;\r\n }\r\n }\r\n };\r\n\r\n return {\r\n restrict: 'EA',\r\n link: linker,\r\n replace: true\r\n };\r\n }]);\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.components')\r\n .directive('loginPanel', function () {\r\n return {\r\n restrict: 'EA',\r\n templateUrl: '/app/components/login-panel/login-panel.template.html',\r\n controller: LoginController,\r\n controllerAs: 'vm'\r\n };\r\n });\r\n\r\n LoginController.$inject = ['$state', 'AuthenticationService', '$rootScope', 'AUTH_EVENTS', 'TokenManagerFactory', 'Flash','HelperFactory'];\r\n function LoginController($state, AuthenticationService, $rootScope, AUTH_EVENTS, TokenManagerFactory, Flash, HelperFactory) {\r\n var vm = this;\r\n\r\n vm.login = login;\r\n\r\n function login() {\r\n vm.dataLoading = true;\r\n var user = {\r\n login: vm.username,\r\n password: vm.password\r\n };\r\n\r\n //Check for token\r\n return TokenManagerFactory.GetToken().then(function (token) {\r\n if (!token) {\r\n Flash.clear();\r\n AuthenticationService.Login(user).then(function (result) {\r\n if (result.status == 200 || result.status == 201 || result.status == 202) {\r\n $rootScope.$broadcast(AUTH_EVENTS.loginSuccess);\r\n window.location.href = $state.href('home');\r\n } else {\r\n $rootScope.$broadcast(AUTH_EVENTS.loginFailed);\r\n try {\r\n var json = JSON.parse(result.data.content);\r\n HelperFactory.getErrorMessage(json);\r\n } catch (e) {\r\n HelperFactory.getErrorMessage(result.data);\r\n }\r\n \r\n }\r\n vm.dataLoading = false;\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.components')\r\n .directive('modalAdicionarUsuario', function () {\r\n return {\r\n restrict: 'EA',\r\n transclude: true,\r\n scope: {\r\n model: \"=\",\r\n onRemove: \"&\"\r\n },\r\n controller: ['Flash', '$uibModal', '$scope', '$uibModalStack', 'ModalAdicionarUsuarioService', 'KendoDataSourceFactory', function (Flash, $uibModal, $scope, $uibModalStack, ModalAdicionarUsuarioService, KendoDataSourceFactory) {\r\n $scope.save = function () {\r\n var data = !$scope.model.Id ? {\r\n CodigoFornecedor: $scope.model.DocumentoFornecedor,\r\n Email: $scope.model.Email,\r\n Nome: $scope.model.Nome,\r\n NumeroDocumento: $scope.model.NumeroDocumento,\r\n } : {\r\n CodigoUsuario: $scope.model.idUsuarioFornecedor,\r\n CodigoFornecedor: $scope.model.DocumentoFornecedor,\r\n Email: $scope.model.Email,\r\n Nome: $scope.model.Nome,\r\n NumeroDocumento: $scope.model.NumeroDocumento,\r\n Id: $scope.model.Id\r\n };\r\n\r\n var promise = $scope.model.Id ? ModalAdicionarUsuarioService.editar(data) : ModalAdicionarUsuarioService.criarNovo(data);\r\n promise.then(function () { \r\n $uibModalStack.dismissAll();\r\n Flash.create('success', \"Salvo com sucesso!\");\r\n }, function (motivo) {\r\n Flash.clear();\r\n Flash.create('danger', motivo.data.message, 8000);\r\n });\r\n };\r\n\r\n $scope.registroNovo = function () {\r\n return !$scope.model.Id;\r\n }\r\n\r\n $scope.pesquisarCPF = function () {\r\n var dSource = KendoDataSourceFactory.iniciar({\r\n endpoint: 'PessoaOData', pageSize: 1\r\n }).$adicionarFiltro('TipoFornecedor', 'eq', 2).$adicionarFiltro('Login', 'eq', $scope.model.NumeroDocumento).$gerarDataSource();\r\n dSource.read().then(function () {\r\n if (dSource.data().length > 0) {\r\n $scope.model.Nome = dSource.data()[0].Nome;\r\n $scope.model.Email = dSource.data()[0].Email;\r\n } else {\r\n $scope.model.Nome = \"\";\r\n $scope.model.Email = \"\";\r\n }\r\n });\r\n };\r\n\r\n $scope.close = function () {\r\n $uibModalStack.dismissAll();\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n animation: true,\r\n scope: $scope,\r\n templateUrl: '/app/components/modal-adicionar-usuario/modal-adicionar-usuario.template.html',\r\n });\r\n\r\n modalInstance.result.then(function (selectedItem) {\r\n }, function () {\r\n $scope.onRemove();\r\n });\r\n }],\r\n };\r\n });\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.components')\r\n .directive('modalGrupoAcesso', function () {\r\n return {\r\n restrict: 'EA',\r\n transclude: true,\r\n scope: {\r\n model: \"=\",\r\n onRemove: \"&\"\r\n },\r\n controller: ['$uibModal', '$scope', '$uibModalStack', 'AdministracaoAdministradorDePerfilService', 'HelperFactory', 'Flash', '$compile', 'KendoDataSourceFactory', function ($uibModal, $scope, $uibModalStack, AdministracaoAdministradorDePerfilService, HelperFactory, Flash, $compile, KendoDataSourceFactory) {\r\n function iniciar() {\r\n Flash.clear();\r\n }\r\n iniciar();\r\n\r\n $scope.appsSelected = [];\r\n $scope.permissionsSelected = [];\r\n $scope.gridFuncionalidades = {\r\n editable: \"inline\",\r\n sortable: true,\r\n pageable: true,\r\n resizable: true,\r\n filterable: true,\r\n columnMenu: true,\r\n toolbar: [\r\n {\r\n name: \"create\",\r\n template: \"\"\r\n }\r\n ],\r\n dataSource: KendoDataSourceFactory.iniciar({\r\n endpoint: 'FunctionalityGroupOData', STS: true, expand: 'Functionality', pageSize: 50\r\n }).$adicionarFiltro('IdGroup', 'eq', $scope.model.Id ? $scope.model.Id : 0).$adicionarIdModelo('Id').$adicionarCampoModelo(\"ReadOnly\", { type: \"boolean\" }).$gerarDataSource(),\r\n columns: [\r\n\t\t\t\t{\r\n\t\t\t\t title: 'Descrição',\r\n\t\t\t\t field: 'Functionality.Description',\r\n\t\t\t\t template: \"#= data.Functionality != undefined ? data.Functionality.Description : ''#\"\r\n\t\t\t\t , width: '50%',\r\n\t\t\t\t editor: function (container, options) {\r\n\t\t\t\t var id = options.model.Functionality ? options.model.Functionality.Id : 0;\r\n\t\t\t\t var element = angular.element('');\r\n\t\t\t\t element.appendTo(container);\r\n\t\t\t\t $compile(angular.element(container).contents())($scope);\r\n\t\t\t\t }\r\n\t\t\t\t},\r\n \t{\r\n \t title: 'Apenas Consultar', field: 'ReadOnly', width: '30%',\r\n \t template: '',\r\n \t},\r\n\t\t\t\t{\r\n\t\t\t\t command: [\"edit\",\r\n {\r\n template: ''\r\n }\r\n\t\t\t\t ],\r\n\t\t\t\t width: '20%',\r\n\t\t\t\t title: \"Ações\"\r\n\t\t\t\t}\r\n ],\r\n save: function (e) {\r\n e.preventDefault();\r\n if (!$scope.selectedFuncionalidade || ($scope.selectedFuncionalidade && !$scope.selectedFuncionalidade.Id)) {\r\n e.preventDefault();\r\n this.editRow(e);\r\n Flash.clear();\r\n Flash.create('danger', \"Preencha todos os campos para inclusão/edição.\");\r\n $scope.$evalAsync();\r\n return;\r\n }\r\n\r\n if (e.model.Id) {\r\n angular.forEach(this._data, function (value, key) {\r\n if (value.Id == e.model.Id) {\r\n e.model.Functionality.Id = $scope.selectedFuncionalidade.Id;\r\n e.model.Functionality.Description = $scope.selectedFuncionalidade.Description;\r\n }\r\n });\r\n this.refresh();\r\n } else {\r\n e.model.Id = guid();\r\n e.model.Functionality = {};\r\n e.model.Functionality.Id = $scope.selectedFuncionalidade.Id;\r\n e.model.Functionality.Description = $scope.selectedFuncionalidade.Description;\r\n this._data.push(e.model);\r\n this.refresh();\r\n }\r\n },\r\n messages: {\r\n commands: {\r\n edit: \" \",\r\n update: \" \",\r\n destroy: \" \",\r\n canceledit: \" \"\r\n }\r\n },\r\n };\r\n\r\n $scope.selectedFuncionalidade;\r\n $scope.funcionalidadesOptions = function (data) {\r\n return {\r\n dataSource: KendoDataSourceFactory.iniciar({\r\n endpoint: 'FunctionalityOData', STS: true, pageSize: 500\r\n }).$adicionarFiltro('App/Id', 'eq', $scope.model.AppId).$gerarDataSource(),\r\n dataTextField: 'Description',\r\n dataValueField: 'Id',\r\n change: function (e, selected, data) {\r\n var model = this.dataItem(this.select());\r\n $scope.selectedFuncionalidade = angular.copy(model);\r\n },\r\n dataBound: function (e) {\r\n if (!this.dataSource.filtered) {\r\n this.dataSource.filtered = true;\r\n $scope.selectedFuncionalidade = {};\r\n if (data > 0) {\r\n var options = this.dataSource._data;\r\n for (var i = 0; i < options.length; i++) {\r\n if (options[i].Id == data) {\r\n this.value(data);\r\n $scope.selectedFuncionalidade = options[i];\r\n }\r\n }\r\n }\r\n\r\n var grid = angular.element(\"#funcionalidades\").data(\"kendoGrid\");\r\n\r\n var bIds = {}\r\n grid._data.forEach(function (obj) {\r\n if (obj.Functionality && obj.Functionality.Id != data)\r\n bIds[obj.Functionality.Id] = obj;\r\n });\r\n\r\n var newData = this._data().filter(function (obj) {\r\n return !(obj.Id in bIds);\r\n });\r\n\r\n this._data(newData);\r\n this.dataSource.data(newData);\r\n this.refresh();\r\n }\r\n }\r\n }\r\n };\r\n\r\n $scope.excluir = function (dataItem) {\r\n var grid = angular.element(\"#funcionalidades\").data(\"kendoGrid\");\r\n\r\n grid.saveRow();\r\n\r\n grid.dataSource._data.forEach(function (element, index, array) {\r\n if (element && element.Id == dataItem.Id) {\r\n grid.dataSource._data.splice(index, 1);\r\n grid.refresh();\r\n }\r\n });\r\n };\r\n\r\n function guid() {\r\n function s4() {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n }\r\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' +\r\n s4() + '-' + s4() + s4() + s4();\r\n }\r\n\r\n $scope.save = function () {\r\n\r\n var data = {\r\n Id: $scope.model.Id,\r\n Description: $scope.model.Description.toUpperCase(),\r\n FunctionalityList: []\r\n }\r\n\r\n var grid = angular.element(\"#funcionalidades\").data(\"kendoGrid\");\r\n grid.saveRow();\r\n var error = false;\r\n angular.forEach(grid._data, function (value, key) {\r\n if (value.Id) {\r\n data.FunctionalityList.push({ IdFunctionality: value.Functionality.Id, ReadOnly: value.ReadOnly });\r\n } else {\r\n error = true;\r\n }\r\n });\r\n\r\n if (error) {\r\n Flash.clear();\r\n Flash.create('danger', \"Preencha todos os campos para inclusão/edição.\");\r\n $scope.$evalAsync();\r\n return;\r\n }\r\n\r\n if ($scope.model.Id) {\r\n AdministracaoAdministradorDePerfilService.atualizarFuncGroup(data).then(function (data) {\r\n Flash.create('success', \"Perfil \" + $scope.model.Description.toUpperCase() + \" atualizado com sucesso.\");\r\n $scope.close();\r\n }, function (data) {\r\n \r\n HelperFactory.getErrorMessage(data.data);\r\n });\r\n } else {\r\n AdministracaoAdministradorDePerfilService.cadastrarFuncGroup(data).then(function (data) {\r\n Flash.create('success', \"Novo perfil \" + $scope.model.Description.toUpperCase() + \" criado com sucesso.\");\r\n $scope.close();\r\n }, function (data) {\r\n HelperFactory.getErrorMessage(data.data);\r\n });\r\n }\r\n };\r\n\r\n $scope.possuiFuncionalidades = function () {\r\n var grid = angular.element(\"#funcionalidades\").data(\"kendoGrid\");\r\n return grid._data && grid._data.length > 0;\r\n }\r\n\r\n $scope.close = function () {\r\n $uibModalStack.dismissAll();\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n animation: true,\r\n scope: $scope,\r\n templateUrl: '/app/components/modal-grupo-acesso/modal-grupo-acesso.template.html',\r\n });\r\n\r\n modalInstance.result.then(function (selectedItem) {\r\n }, function () {\r\n $scope.onRemove();\r\n });\r\n }],\r\n };\r\n });\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.components')\r\n .directive('modalUsuarioExterno', function () {\r\n return {\r\n restrict: 'EA',\r\n transclude: true,\r\n scope: {\r\n model: \"=\",\r\n onRemove: \"&\"\r\n },\r\n controller: ['Flash','$uibModal', '$scope', '$uibModalStack', 'ModalUsuarioExternoService', function (Flash, $uibModal, $scope, $uibModalStack, ModalUsuarioExternoService) {\r\n $scope.save = function () {\r\n var data = {\r\n Documento: $scope.model.Login,\r\n Email: $scope.model.Email,\r\n Status: $scope.model.StatusId.Value ? $scope.model.StatusId.Value : $scope.model.StatusId\r\n };\r\n ModalUsuarioExternoService.atualizarStatusEmail(data).then(function () {\r\n Flash.create('success', \"Salvo com sucesso!\");\r\n $uibModalStack.dismissAll();\r\n }, function (motivo) {\r\n Flash.clear();\r\n Flash.create('danger', motivo.data.exceptionMessage, 8000);\r\n });\r\n };\r\n\r\n $scope.close = function () {\r\n $uibModalStack.dismissAll();\r\n };\r\n\r\n $scope.statusDataSource = {\r\n dataSource: [\r\n { Text: 'Normal', Value: 1 },\r\n { Text: 'Expirado', Value: 2 },\r\n { Text: 'Bloqueado', Value: 3 },\r\n ],\r\n dataTextField: 'Text',\r\n dataValueField: 'Value',\r\n value: $scope.model.StatusId,\r\n autoBind: true\r\n };\r\n var modalInstance = $uibModal.open({\r\n animation: true,\r\n scope: $scope,\r\n templateUrl: '/app/components/modal-usuario-externo/modal-usuario-externo.template.html',\r\n });\r\n\r\n modalInstance.result.then(function (selectedItem) {\r\n }, function () {\r\n $scope.onRemove();\r\n });\r\n }]\r\n };\r\n });\r\n})();\r\n\r\n","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t .module('bunge.components')\r\n\t .directive('navOptions', ['$rootScope', 'NavigationService', function ($rootScope, NavigationService) {\r\n\t\t return {\r\n\t\t\t restrict: 'EA',\r\n\t\t\t templateUrl:'/app/components/navigation-options/navigation-options.template.html',\r\n\t\t\t replace: true,\r\n\t\t\t link: function (scope, element, attrs) {\r\n\t\t\t\t var PATHNAME = document.location.pathname;\r\n\t\t\t\t var pathSplit = PATHNAME.split(\"/\");\r\n\t\t\t\t var stateTopAtual = pathSplit[1];\r\n\t\t\t \r\n\t\t\t\t if ($rootScope.navPermissions.length == 0)\r\n\t\t\t\t NavigationService.BuildUserMenu();\r\n\r\n\t\t\t\t scope.stateTop = stateTopAtual;\r\n\t\t\t\t scope.navPermissions = $rootScope.navPermissions;\r\n\t\t\t\t}\r\n\t\t };\r\n\t \t}]);\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.components')\r\n .directive('visibilidadeTabela', ['Session', '$state', function ($rootScope, $state) {\r\n\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element, attrs) {\r\n scope.$watch('visibilidadeTabela._data', function (tabela) {\r\n if (!tabela || tabela.length == 0) {\r\n if (!element.next().hasClass('msg')) {\r\n element.hide();\r\n element.after(\"
Não há registros de \" + attrs.nome + \" para exibir
\");\r\n } \r\n } else {\r\n if (element.next().hasClass('msg')) {\r\n element.show();\r\n element.next().remove();\r\n scope.visibilidadeTabela.refresh();\r\n }\r\n }\r\n });\r\n },\r\n scope: {\r\n 'visibilidadeTabela': '=',\r\n },\r\n };\r\n }]);\r\n})();\r\n\r\n","(function () {\r\n\t\r\n'use strict';\r\n\r\nangular.module('bunge.system', []);\r\n\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('bunge').factory('ADM_NAV_DYN_OPTIONS', ADM_NAV_DYN_OPTIONS);\r\n\t\r\n\tfunction ADM_NAV_DYN_OPTIONS() {\r\n\t\treturn {\r\n\t\t\tparametros: ['app/modules/administracao/submodules/parametros/parametros.routes.js',\r\n 'app/modules/administracao/submodules/parametros/controller/parametros.controller.js',\r\n 'app/modules/administracao/submodules/parametros/services/parametros.service.js'],\r\n\t\t\t\r\n\t\t\t\"consultar-registro-acesso\": ['app/modules/administracao/submodules/consultar-registro-acesso/consultar-registro-acesso.routes.js',\r\n 'app/modules/administracao/submodules/consultar-registro-acesso/controllers/consultar-registro-acesso.controller.js'],\r\n\t\t\t\r\n\t\t\t\"usuario-externo\": ['app/modules/administracao/submodules/usuario-externo/usuario-externo.routes.js',\r\n 'app/modules/administracao/submodules/usuario-externo/controllers/usuario-externo.controller.js',\r\n 'app/modules/administracao/submodules/usuario-externo/services/usuario-externo.service.js'],\r\n\r\n\t\t\t\"usuarios-por-fornecedor\": ['app/modules/administracao/submodules/usuarios-por-fornecedor/usuarios-por-fornecedor.routes.js',\r\n\t\t\t 'app/modules/administracao/submodules/usuarios-por-fornecedor/modules/adicionar-usuario/adicionar-usuario.routes.js',\r\n\t\t\t 'app/modules/administracao/submodules/usuarios-por-fornecedor/modules/consultar-usuarios/consultar-usuarios.routes.js',\r\n 'app/modules/administracao/submodules/usuarios-por-fornecedor/controllers/usuarios-por-fornecedor.controller.js',\r\n 'app/modules/administracao/submodules/usuarios-por-fornecedor/modules/adicionar-usuario/controller/adicionar-usuario.controller.js',\r\n\t\t\t 'app/modules/administracao/submodules/usuarios-por-fornecedor/modules/consultar-usuarios/controller/consultar-usuarios.controller.js',\r\n\t\t\t 'app/modules/administracao/submodules/usuarios-por-fornecedor/modules/consultar-usuarios/services/consultar-usuarios.service.js',\r\n\t\t\t 'app/modules/administracao/submodules/usuarios-por-fornecedor/modules/adicionar-usuario/services/adicionar-usuario.service.js'\r\n ],\r\n \"administrador-de-aplicacao\": [\r\n'app/modules/administracao/submodules/administrador-de-aplicacao/administrador-de-aplicacao.routes.js',\r\n 'app/modules/administracao/submodules/administrador-de-aplicacao/controller/administrador-de-aplicacao.controller.js',\r\n 'app/modules/administracao/submodules/administrador-de-aplicacao/services/administrador-de-aplicacao.service.js'\r\n ],\r\n \"manter-portal\": [\r\n 'app/modules/administracao/submodules/manter-portal/manter-portal.routes.js',\r\n 'app/modules/administracao/submodules/manter-portal/controller/manter-portal.controller.js',\r\n 'app/modules/administracao/submodules/manter-portal/services/manter-portal.services.js'\r\n ],\r\n \"manter-aplicacao\": [\r\n 'app/modules/administracao/submodules/manter-aplicacao/manter-aplicacao.routes.js',\r\n 'app/modules/administracao/submodules/manter-aplicacao/controller/manter-aplicacao.controller.js',\r\n 'app/modules/administracao/submodules/manter-aplicacao/services/manter-aplicacao.service.js'\r\n ],\r\n \"manter-funcionalidade\": [\r\n 'app/modules/administracao/submodules/manter-funcionalidade/manter-funcionalidade.routes.js',\r\n 'app/modules/administracao/submodules/manter-funcionalidade/controller/manter-funcionalidade.controller.js',\r\n 'app/modules/administracao/submodules/manter-funcionalidade/services/manter-funcionalidade.service.js'\r\n ],\r\n\t\t\t\"manter-perfil\": [\r\n 'app/modules/administracao/submodules/administrador-de-perfil/administrador-de-perfil.routes.js',\r\n 'app/modules/administracao/submodules/administrador-de-perfil/controller/administrador-de-perfil.controller.js',\r\n 'app/modules/administracao/submodules/administrador-de-perfil/services/administrador-de-perfil.service.js'\r\n\t\t\t],\r\n \"usuario-perfil\": [\r\n 'app/modules/administracao/submodules/usuario-perfil/usuario-perfil.routes.js',\r\n 'app/modules/administracao/submodules/usuario-perfil/controller/usuario-perfil.controller.js',\r\n 'app/modules/administracao/submodules/usuario-perfil/services/usuario-perfil.service.js'\r\n ],\r\n \"acesso-empresa-filial\":[\r\n'app/modules/administracao/submodules/acesso-empresa-filial/acesso-empresa-filial.routes.js',\r\n 'app/modules/administracao/submodules/acesso-empresa-filial/controller/acesso-empresa-filial.controller.js',\r\n 'app/modules/administracao/submodules/acesso-empresa-filial/services/acesso-empresa-filial.service.js'\r\n ],\r\n \r\n\t\t};\r\n\t}\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular.module('bunge').factory('ADM_NAV_OPTIONS', ADM_NAV_OPTIONS);\r\n\r\n\tADM_NAV_OPTIONS.$inject = ['USER_ROLES'];\r\n\t\r\n\tfunction ADM_NAV_OPTIONS(USER_ROLES) {\r\n\t\treturn {\r\n\t\t\tparametros: {\r\n\t\t\t\troute: '.parametros',\r\n\t\t\t\tlegenda: 'PARÂMETROS',\r\n\t\t\t\tpublicKey: \"ADM0001\",\r\n\t\t\t\tinternalKey: \"parametros\",\r\n\t\t\t\tshowPublicKey: true,\r\n order: 1\r\n\t\t\t},\r\n\t\t\tconsultarRegistroLog: {\r\n\t\t\t\troute: '.consultar-registro-acesso',\r\n\t\t\t\tlegenda: 'CONSULTAR REGISTROS DE ACESSO',\r\n\t\t\t\tpublicKey: \"ADM0003\",\r\n\t\t\t\tinternalKey: \"consultar-registro-acesso\",\r\n\t\t\t\tshowPublicKey: true,\r\n\t\t\t\torder: 2\r\n\t\t\t},\r\n\t\t\tUsuarioExterno: {\r\n\t\t\t\troute: '.usuario-externo',\r\n\t\t\t\tlegenda: 'USUÁRIO EXTERNO',\r\n\t\t\t\tpublicKey: \"ADM0004\",\r\n\t\t\t\tinternalKey: \"usuario-externo\",\r\n\t\t\t\tshowPublicKey: true,\r\n\t\t\t\torder: 3\r\n\t\t\t},\r\n\t\t\tUsuariosPorFornecedor: {\r\n\t\t\t route: '.usuarios-por-fornecedor',\r\n\t\t\t\tlegenda: 'USUÁRIOS POR FORNECEDOR',\r\n\t\t\t\tpublicKey: \"ADM0005\",\r\n\t\t\t\tinternalKey: \"usuarios-por-fornecedor\",\r\n\t\t\t\tsubRoutes: ['.usuarios-por-fornecedor.consultar-usuarios',\r\n '.usuarios-por-fornecedor.adicionar-usuario', '.usuarios-por-fornecedor'\r\n\t\t\t\t]\r\n\t\t\t\t, showPublicKey: true,\r\n\t\t\t\torder: 4\r\n\t\t\t},\r\n AdministradorDeAplicacao: {\r\n route: '.administrador-de-aplicacao',\r\n legenda: 'ADMINISTRADOR DE APLICAÇÃO',\r\n publicKey: 'ADM0008',\r\n internalKey: 'administrador-de-aplicacao'\r\n\t\t\t\t, showPublicKey: true,\r\n order: 5\r\n },\r\n ManterPortal: {\r\n\t\t\t\troute: '.manter-portal',\r\n\t\t\t\tlegenda: 'MANTER PORTAL',\r\n\t\t\t\tpublicKey: 'ADM0006',\r\n\t\t\t\tinternalKey: 'manter-portal'\r\n\t\t\t\t, showPublicKey: true,\r\n\t\t\t\torder: 6\r\n\t\t\t},\r\n ManterAplicacao: {\r\n route: '.manter-aplicacao',\r\n legenda: 'MANTER APLICAÇÃO',\r\n publicKey: 'ADM0009',\r\n internalKey: 'manter-aplicacao'\r\n\t\t\t\t, showPublicKey: true,\r\n order: 7\r\n },\r\n ManterFuncionalidade: {\r\n\t\t\t\troute: '.manter-funcionalidade',\r\n\t\t\t\tlegenda: 'MANTER FUNCIONALIDADE',\r\n\t\t\t\tpublicKey: 'ADM0007',\r\n\t\t\t\tinternalKey: 'manter-funcionalidade'\r\n\t\t\t\t, showPublicKey: true,\r\n\t\t\t\torder: 8\r\n\t\t\t},\r\n\t\t\tAdministradorDePerfil: {\r\n route: '.manter-perfil',\r\n legenda: 'PERMITIR LIBERAÇÃO DE ACESSO',\r\n publicKey: \"ADM0002\",\r\n internalKey: \"manter-perfil\",\r\n\t\t\t\tshowPublicKey: true,\r\n\t\t\t\tonlyAdmin: true,\r\n\t\t\t\torder: 9\r\n },\r\n UsuarioPerfil: {\r\n\t\t\t\troute: '.usuario-perfil',\r\n\t\t\t\tlegenda: 'USUÁRIO PERFIL',\r\n\t\t\t\tpublicKey: 'ADM0010',\r\n\t\t\t\tinternalKey: 'usuario-perfil',\r\n\t\t\t\tonlyAdmin: true,\r\n\t\t\t\tshowPublicKey: true,\r\n\t\t\t\torder: 10\r\n\t\t\t},\r\n AcessoEmpresaFilial: {\r\n route: '.acesso-empresa-filial',\r\n legenda: 'ACESSO A EMPRESA E FILIAL',\r\n publicKey: \"ADM0011\",\r\n internalKey: \"acesso-empresa-filial\",\r\n onlyAdmin: true,\r\n showPublicKey: true,\r\n order: 11\r\n }\r\n \r\n\t\t};\r\n\t}\r\n})();","(function(){\r\n\t'use strict';\r\n\r\n\tangular.module('bunge').factory('APP_TOKEN_NAMES', APP_TOKEN_NAMES);\r\n\r\n\t// PublicKey: InternalApplicationName\r\n\tfunction APP_TOKEN_NAMES(){\r\n\t\treturn {\r\n\t\t\t'EDI': 'edi',\r\n\t\t\t'OCW': 'ordem-carga',\r\n\t\t\t'AGD': 'agendamento',\r\n\t\t\t'MON': 'monitoramento',\r\n\t\t\t'ADM': 'portaladministrador',\r\n\t\t\t'TEF': 'tempo-em-fila',\r\n\t\t\t'FOR': 'fornecedor'\r\n\t\t};\r\n\t} \r\n}());","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge')\r\n .constant('AUTH_EVENTS', {\r\n loginSuccess: 'auth-login-success',\r\n loginFailed: 'auth-login-failed',\r\n logoutSuccess: 'auth-logout-success',\r\n sessionTimeout: 'auth-session-timeout',\r\n notAuthenticated: 'auth-not-authenticated',\r\n notAuthorized: 'auth-not-authorized'\r\n });\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge')\r\n .constant('CLAIMS_TYPE', {\r\n APP: 'app',\r\n PERMISSION: 'permission',\r\n EXP: 'exp',\r\n USERTYPE: 'userType'\r\n });\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge').factory('FOR_CC_TABS_CONSTANT', FOR_CC_TABS_CONSTANT);\r\n\r\n function FOR_CC_TABS_CONSTANT() {\r\n return [{\r\n order: 1,\r\n route: 'fornecedor.conta-corrente.recebimentos',\r\n legenda: 'RECEBIMENTOS'\r\n },\r\n {\r\n order: 2,\r\n route: 'fornecedor.conta-corrente.nota-fiscal',\r\n legenda: 'NOTA FISCAL'\r\n },\r\n {\r\n order: 3,\r\n route: 'fornecedor.conta-corrente.fixacao',\r\n legenda: 'FIXAÇÕES'\r\n },\r\n {\r\n order: 4,\r\n route: 'fornecedor.conta-corrente.pagamento',\r\n legenda: 'PAGAMENTOS'\r\n },\r\n {\r\n order: 5,\r\n route: 'fornecedor.conta-corrente.saldo-contrato',\r\n legenda: 'SALDO CONTRATOS'\r\n }\r\n ];\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge').factory('NAV_OPTIONS', NAV_OPTIONS);\r\n\r\n NAV_OPTIONS.$inject = ['USER_ROLES', 'ENDPOINT_URI'];\r\n\r\n function NAV_OPTIONS(USER_ROLES, ENDPOINT_URI) {\r\n return {\r\n inicio: { legenda: 'Início', route: 'home', isRootMenu: true, isExternalApp: false, publicKey: null, dontShowHome: true },\r\n administrador: { legenda: 'Administração', route: 'administracao', isRootMenu: false, appName: 'administracao', isExternalApp: false, publicKey: 'PADM', imgFileName: 'images/administrador.png'},\r\n logistico: { legenda: 'Logístico', route: ENDPOINT_URI.endpoint_logistico, isRootMenu: false, appName: 'logistico', isExternalApp: true, publicKey: 'PLGS', imgFileName: 'images/logistico.png'},\r\n fornecedor: { legenda: 'Fornecedor', route: 'fornecedor', isRootMenu: false, appName: 'fornecedor', isExternalApp: false, publicKey: 'PFOR', imgFileName: 'images/fornecedor.png'}\r\n };\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge').factory('PORTAL_PUBLIC_KEYS', PORTAL_PUBLIC_KEYS);\r\n\r\n // PublicKey: InternalApplicationName\r\n function PORTAL_PUBLIC_KEYS() {\r\n return {\r\n 'administracao': 'PADM',\r\n 'fornecedor': 'PFOR', \r\n };\r\n }\r\n}());","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge')\r\n .constant('USER_ROLES', {\r\n all: '*',\r\n interno: 'interno',\r\n externo: 'externo',\r\n });\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge').factory('FOR_SALDO_TABS_CONSTANT', FOR_SALDO_TABS_CONSTANT);\r\n\r\n function FOR_SALDO_TABS_CONSTANT() {\r\n return [{\r\n order: 1,\r\n route: 'fornecedor.conta-corrente.saldo-contrato.resumido',\r\n legenda: 'RESUMIDO'\r\n },\r\n {\r\n order: 2,\r\n route: 'fornecedor.conta-corrente.saldo-contrato.detalhado',\r\n legenda: 'DETALHADO'\r\n }\r\n ];\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge')\r\n .constant('SIDEBAROPTS', [\r\n 'administracao',\r\n 'fornecedor'\r\n ]);\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge')\r\n .factory('FOR_NAV_DYN_OPTIONS', FOR_NAV_DYN_OPTIONS);\r\n\r\n function FOR_NAV_DYN_OPTIONS() {\r\n return {\r\n contratos: [\r\n 'app/modules/fornecedor/submodules/contratos/contratos.routes.js',\r\n 'app/modules/fornecedor/submodules/contratos/services/contratos.services.js',\r\n 'app/modules/fornecedor/submodules/contratos/controller/contratos.controller.js',\r\n 'app/modules/fornecedor/submodules/contratos/modal-detalhe-contrato/modal-detalhe-contrato.directive.js',\r\n ],\r\n \"conta-corrente\": [\r\n 'app/modules/fornecedor/submodules/conta-corrente/conta-corrente.routes.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/controller/conta-corrente.controller.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/factories/params.factory.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/submodules/recebimentos/recebimentos.routes.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/submodules/recebimentos/controller/recebimentos.controller.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/submodules/recebimentos/modal-detalhe-recebimento/modal-detalhe-recebimento.directive.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/submodules/nota-fiscal/nota-fiscal.routes.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/submodules/nota-fiscal/controller/nota-fiscal.controller.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/submodules/nota-fiscal/modals/modal-detalhe-nota.directive.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/submodules/fixacao/fixacao.routes.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/submodules/fixacao/controller/fixacao.controller.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/submodules/pagamento/pagamento.routes.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/submodules/pagamento/controller/pagamento.controller.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/submodules/saldo-contrato/saldo-contrato.routes.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/submodules/saldo-contrato/controller/saldo-contrato.controller.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/submodules/saldo-contrato/submodules/resumido/resumido.routes.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/submodules/saldo-contrato/submodules/resumido/controller/resumido.controller.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/submodules/saldo-contrato/submodules/detalhado/detalhado.routes.js',\r\n 'app/modules/fornecedor/submodules/conta-corrente/submodules/saldo-contrato/submodules/detalhado/controller/detalhado.controller.js'\r\n ],\r\n pagamentos: [\r\n 'app/modules/fornecedor/submodules/pagamentos/pagamentos.routes.js',\r\n 'app/modules/fornecedor/submodules/pagamentos/services/pagamentos.services.js',\r\n 'app/modules/fornecedor/submodules/pagamentos/controller/pagamentos.controller.js'\r\n ],\r\n administracao: [\r\n 'app/modules/fornecedor/submodules/administracao/administracao.routes.js',\r\n 'app/modules/fornecedor/submodules/administracao/services/administracao.services.js',\r\n 'app/modules/fornecedor/submodules/administracao/controller/administracao.controller.js'\r\n ]\r\n };\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge').factory('FOR_NAV_OPTIONS', FOR_NAV_OPTIONS);\r\n\r\n function FOR_NAV_OPTIONS() {\r\n return {\r\n contratos: {\r\n route: '.contratos',\r\n legenda: 'CONTRATOS',\r\n publicKey: \"FOR0001\",\r\n internalKey: \"contratos\",\r\n showPublicKey: true,\r\n order: 1\r\n },\r\n \"conta-corrente\": {\r\n route: '.conta-corrente',\r\n legenda: 'CONTA CORRENTE',\r\n publicKey: \"FOR0004\",\r\n internalKey: \"conta-corrente\",\r\n showPublicKey: true,\r\n order: 2,\r\n invisivel: true\r\n },\r\n pagamentos: {\r\n route: '.pagamentos',\r\n legenda: 'PAGAMENTOS',\r\n publicKey: \"FOR0002\",\r\n internalKey: \"pagamentos\",\r\n showPublicKey: true,\r\n order: 3\r\n },\r\n administracao: {\r\n route: '.adm',\r\n legenda: 'AGRUPAMENTO',\r\n publicKey: \"FOR0003\",\r\n internalKey: \"administracao\",\r\n showPublicKey: true,\r\n order: 4\r\n },\r\n };\r\n }\r\n})();","angular.module(\"bunge.system\", [])\n.constant(\"ENDPOINT_URI\", {\"endpoint_backend\":\"https://portalbbr-qa.bunge.com.br/api/adm/\",\"endpoint_sts\":\"https://portalbbr-qa.bunge.com.br/sts/\",\"endpoint_stsOdata\":\"https://portalbbr-qa.bunge.com.br/sts/stsod/\",\"endpoint_backendReq\":\"https://portalbbr-qa.bunge.com.br/api/\",\"endpoint_logistico\":\"https://portalbbr-qa.bunge.com.br:8081/\",\"endpoint_fornecedorReq\":\"https://portalbbr-qa.bunge.com.br/api-fornecedor/\",\"endpoint_fornecedor\":\"https://portalbbr-qa.bunge.com.br/api-fornecedor/oData/\"});\n","(function(){\r\n\t'use strict';\r\n\r\n\tangular.module('bunge').directive('permission', ['$rootScope', 'Session', function ($rootScope, Session) {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tscope: {\r\n\t\t\t\tpermission: '='\r\n\t\t\t},\r\n\t \r\n\t\t\tlink: function (scope, elem, attrs) {\r\n\t\t\t\tif(\"permission\" in scope || scope.permission.length == 2){\r\n\t\t\t\t\tvar appName = scope.permission[0];\t\t\t\t\t\r\n\t\t\t\t\tvar functionality = scope.permission[1];\r\n\r\n\t\t\t\t\tvar appList = Session.GetAppsByName(appName);\r\n\t\t\t\t\tfor (var appIndex in appList) {\r\n\t\t\t\t\t var permissions = appList[appIndex].permissions;\r\n\r\n\t\t\t\t\t if (functionality in permissions) {\r\n\t\t\t\t\t if (!permissions[functionality].ReadOnly) {\r\n\t\t\t\t\t return;\r\n\t\t\t\t\t }\r\n\t\t\t\t\t }\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\telem.remove();\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthrow \"Faltam parâmetros na diretiva de permissão\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}]);\r\n}());","(function() {\r\n 'use strict';\r\n\r\n angular.module('bunge')\r\n .factory('HelperFactory', ['ngDialog', 'Flash', function(ngDialog, Flash) {\r\n var HelperFactory = function() {\r\n var helper = this;\r\n\r\n this.validate = function(form, name, type, value, uiSelect) {\r\n if (uiSelect)\r\n return this.validateUiSelect(form, name, value);\r\n\r\n if (form.$submitted) form[name].$setTouched(true);\r\n return (form[name].$touched) && form[name].$error[type];\r\n };\r\n\r\n this.getAdminGridToolbarNoPermission = function() {\r\n var gridToolbar = [{\r\n name: \"create\",\r\n template: \"Novo\"\r\n }];\r\n\r\n return gridToolbar;\r\n };\r\n\r\n this.getAdminGridToolbar = function(page, functionality) {\r\n var gridToolbar = [{\r\n name: \"create\",\r\n template: \"Novo\"\r\n }];\r\n\r\n return gridToolbar;\r\n };\r\n\r\n this.getAdminDeleteButtonTemplateNoPermission = function() {\r\n var template = '';\r\n\r\n return template;\r\n }\r\n\r\n\r\n this.getAdminDeleteButtonTemplate = function(page, functionality) {\r\n var template = '';\r\n return template;\r\n }\r\n\r\n this.getAdminEditButtonTemplate = function(page, functionality) {\r\n var template = '' +\r\n ' ';\r\n\r\n return template;\r\n }\r\n\r\n this.setKendoTitle = function(elm, cssItem, label) {\r\n elm.sender.element.find(cssItem).attr('title', label);\r\n };\r\n\r\n this.validateUiSelect = function(form, name, value) {\r\n if (form.$submitted && !value) {\r\n form[name].$setValidity(name, false);\r\n return true;\r\n }\r\n form[name].$setValidity(name, true);\r\n return false;\r\n };\r\n\r\n this.gerarId = function(len) {\r\n var chars = \"0123456789\";\r\n var string_length = len;\r\n var randomstring = '';\r\n\r\n for (var x = 0; x < string_length; x++) {\r\n\r\n var letterOrNumber = Math.floor(Math.random() * 2);\r\n if (letterOrNumber == 0) {\r\n var newNum = Math.floor(Math.random() * 9);\r\n randomstring += newNum;\r\n } else {\r\n var rnum = Math.floor(Math.random() * chars.length);\r\n randomstring += chars.substring(rnum, rnum + 1);\r\n }\r\n\r\n }\r\n return randomstring;\r\n }\r\n\r\n this.listaParaObjeto = function(list, idAttr, parentAttr, childrenAttr) {\r\n if (!idAttr) idAttr = 'id';\r\n if (!parentAttr) parentAttr = 'parentId';\r\n if (!childrenAttr) childrenAttr = 'children';\r\n var treeList = [];\r\n var lookup = {};\r\n list.forEach(function(obj) {\r\n obj['MetaName'] = obj.Name;\r\n lookup[obj[idAttr]] = obj;\r\n obj[childrenAttr] = [];\r\n });\r\n list.forEach(function(obj) {\r\n delete obj[idAttr];\r\n var parentId = obj[parentAttr];\r\n delete obj[parentAttr];\r\n if (parentId != null) {\r\n obj['MetaName'] = lookup[parentId]['MetaName'] + '_' + obj['MetaName'];\r\n lookup[parentId][childrenAttr].push(obj);\r\n } else {\r\n treeList.push(obj);\r\n }\r\n });\r\n return treeList;\r\n };\r\n\r\n this.objetoParaLista = function(treeObj, atributos, dePara, idAttr, parentAttr, childrenAttr, levelAttr) {\r\n if (!idAttr) idAttr = 'id';\r\n if (!parentAttr) parentAttr = 'parentId';\r\n if (!childrenAttr) childrenAttr = 'children';\r\n if (!levelAttr) levelAttr = 'level';\r\n var listaAtributosParaInserir = [];\r\n var mostrarAtributos = atributos == 'comAtributos';\r\n\r\n function gerarIdsLayout(list, parentId, level) {\r\n\r\n\r\n list.forEach(function(obj, index) {\r\n obj[idAttr] = helper.gerarId(10);\r\n obj[parentAttr] = parentId ? parentId : null;\r\n obj[childrenAttr] = gerarIdsLayout(obj[childrenAttr], obj[idAttr], level + 1);\r\n\r\n if (dePara) {\r\n obj[levelAttr] = level;\r\n obj[childrenAttr] != '' ? obj['hasChilds'] = true : obj['hasChilds'] = false;\r\n obj['link'] = '';\r\n }\r\n list[index] = obj;\r\n });\r\n\r\n\r\n return list;\r\n }\r\n\r\n\r\n function resgataAtributosComValor(obj) {\r\n var listaAtributosComValor = [];\r\n var metaName = obj['MetaName'];\r\n if (obj['Attributes']) {\r\n var attributes = obj['Attributes'];\r\n var abriu = false;\r\n var numeroItem = 0;\r\n angular.forEach(attributes, function(item, key) {\r\n\r\n if (item == \"[\") {\r\n abriu = true;\r\n numeroItem++;\r\n listaAtributosComValor[numeroItem] = '';\r\n }\r\n\r\n if (item == \"]\") {\r\n abriu = false;\r\n\r\n }\r\n\r\n if (item != \"[\" && item != \"]\" && abriu) {\r\n listaAtributosComValor[numeroItem] += item;\r\n\r\n }\r\n\r\n });\r\n\r\n return listaAtributosComValor;\r\n }\r\n }\r\n\r\n function flattenChild(childObj, parentId, level) {\r\n var array = [];\r\n //resgataAtributosComValor(childObj);\r\n var childCopy = angular.extend({}, childObj);\r\n childCopy[parentAttr] = parentId;\r\n childCopy['ehAtributoValor'] = false;\r\n delete childCopy[childrenAttr];\r\n array.push(childCopy);\r\n\r\n\r\n\r\n var atributosComValor = resgataAtributosComValor(childObj);\r\n if (atributosComValor != null && mostrarAtributos) {\r\n //console.log(atributosComValor);\r\n\r\n atributosComValor.forEach(function(atributo) {\r\n var childCopy = angular.extend({}, childObj);\r\n childCopy['id'] = helper.gerarId(10);\r\n childCopy['Name'] = atributo;\r\n childCopy['MetaName'] = childObj['MetaName'] + \"@\" + atributo;\r\n childCopy['ehAtributoValor'] = true;\r\n array.push(childCopy);\r\n //ray = array.concat(flattenChild(childObj, obj[idAttr], level+1));\r\n\r\n });\r\n\r\n\r\n }\r\n array = array.concat(processChildren(childObj, level));\r\n\r\n return array;\r\n };\r\n\r\n function processChildren(obj, level) {\r\n if (!level) level = 0;\r\n var array = [];\r\n\r\n obj[childrenAttr].forEach(function(childObj) {\r\n array = array.concat(flattenChild(childObj, obj[idAttr], level + 1));\r\n });\r\n\r\n return array;\r\n };\r\n\r\n function process(obj, level) {\r\n if (!level) level = 0;\r\n var array = [];\r\n obj.forEach(function(childObj) {\r\n array = array.concat(flattenChild(childObj, null, level + 1));\r\n\r\n });\r\n return array;\r\n };\r\n\r\n treeObj = gerarIdsLayout(treeObj, false, 0);\r\n\r\n var result = process(treeObj);\r\n\r\n return result;\r\n };\r\n\r\n this.alerta = function(mensagem) {\r\n var template = '
' +\r\n '
' +\r\n '

' +\r\n mensagem +\r\n '

' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
';\r\n ngDialog.open({\r\n template: template,\r\n plain: true,\r\n });\r\n };\r\n\r\n this.alertaConfirma = function(mensagem) {\r\n var template = '
' +\r\n '
' +\r\n '

' +\r\n mensagem +\r\n '

' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
';\r\n return ngDialog.openConfirm({\r\n template: template,\r\n plain: true,\r\n });\r\n };\r\n\r\n\r\n this.alertaConfirmaStateChangeAlert = function() {\r\n var mensagem = 'Todas as alterações não salvas serão perdidas. Tem certeza que deseja fazer isso?';\r\n var template = '
' +\r\n '
' +\r\n '

' +\r\n mensagem +\r\n '

' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
';\r\n return ngDialog.openConfirm({\r\n template: template,\r\n plain: true,\r\n });\r\n };\r\n\r\n this.getErrorMessage = function(data) {\r\n var mensage = angular.isDefined(data[0]) ? '' + data[0].campo + ' ' + data[0].mensagem : data.message ? data.message : data.Message;\r\n Flash.create('danger', mensage);\r\n };\r\n\r\n this.mergeFooterTemplate = function(event, indexColSpan, size) {\r\n var tds = event.sender.footer[0].childNodes[0].childNodes;\r\n mergeFooterTemplate(event, indexColSpan, size, tds);\r\n\r\n }\r\n\r\n this.mergeSubFooterTemplate = function(event, indexColSpan, size) {\r\n var tds;\r\n for (var i = 0; i < event.sender.tbody[0].querySelectorAll(\".k-group-footer\").length; i++) {\r\n tds = event.sender.tbody[0].querySelectorAll(\".k-group-footer\")[i].childNodes;\r\n mergeFooterTemplate(event, indexColSpan, size, tds);\r\n }\r\n }\r\n\r\n function mergeFooterTemplate(event, indexColSpan, size, tds) {\r\n var tdColSpan = tds[indexColSpan];\r\n tdColSpan.setAttribute(\"colspan\", size);\r\n\r\n if (event.sender.thead[0].childNodes) {\r\n var columns = event.sender.thead[0].childNodes[event.sender.thead[0].childNodes.length - 1];\r\n var columnsSize = columns.childNodes.length - (size - 1);\r\n if (tds.length > columnsSize) {\r\n for (var i = 1; i < size; i++) {\r\n $(tds[indexColSpan + i]).remove();\r\n indexColSpan--;\r\n }\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n this.moveGridToolbarToFooter = function(id) {\r\n $(id).find(\".k-grid-toolbar\").addClass('k-toolbar-footer').insertAfter($(id));\r\n }\r\n };\r\n return new HelperFactory();\r\n }]);\r\n\r\n\r\n}());","(function () {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.system')\r\n .factory('KendoDataSourceFilterGenerator', KendoDataSourceFilterGenerator);\r\n\r\n function KendoDataSourceFilterGenerator() {\r\n function KendoDataSourceFilterGenerator() {\r\n angular.extend(this);\r\n this.filtros = [];\r\n }\r\n\r\n KendoDataSourceFilterGenerator.prototype = {\r\n $adicionarFiltro: function (campo, operador, valor) {\r\n var params = {\r\n field: campo,\r\n operator: operador,\r\n value: valor\r\n };\r\n if (!this.filterSet) {\r\n this.filtros.push(params);\r\n } else {\r\n this.filterSet.filters.push(params);\r\n }\r\n return this;\r\n },\r\n $iniciarFilterSet: function (tipo) {\r\n if (this.filterSet) {\r\n var parentNode = this.filterSet;\r\n this.filterSet = this.filterSet.filters;\r\n this.filterSet = { logic: tipo, filters: [], parent: parentNode };\r\n } else {\r\n this.filterSet = { logic: tipo, filters: [] };\r\n }\r\n return this;\r\n },\r\n $adicionarFiltroLambda: function (campo, operador, childParams) {\r\n angular.forEach(childParams.filters, function (filter) {\r\n filter.field = \"child/\" + filter.field;\r\n });\r\n var params = {\r\n field: campo,\r\n operator: operador,\r\n params: childParams\r\n };\r\n if (!this.filterSet) {\r\n this.filtros.push(params);\r\n } else {\r\n this.filterSet.filters.push(params);\r\n }\r\n return this;\r\n },\r\n $finalizarFilterSet: function () {\r\n this.gerandoFilterSet = false;\r\n if (this.filterSet.parent) {\r\n this.filterSet.parent.filters.push(this.filterSet);\r\n this.filterSet = this.filterSet.parent;\r\n } else {\r\n this.filtros.push(this.filterSet);\r\n this.filterSet = null;\r\n }\r\n return this;\r\n },\r\n $gerarFiltro: function () {\r\n var filters = { filters: [] };\r\n this.filtros.forEach(function (obj) {\r\n if (!obj.filters || (obj.filters && obj.filters.length > 0))\r\n filters[\"filters\"].push(obj);\r\n });\r\n return filters.length > 0 || filters.filters.length ? filters : null;\r\n }\r\n };\r\n\r\n function iniciar() {\r\n return new KendoDataSourceFilterGenerator();\r\n }\r\n\r\n return {\r\n iniciar: iniciar\r\n };\r\n\r\n }\r\n})();","(function() {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.system')\r\n .factory('KendoDataSourceFactory', KendoDataSourceFactory);\r\n\r\n KendoDataSourceFactory.$inject = ['ENDPOINT_URI', 'KendoDataSourceFilterGenerator', 'TokenManagerFactory', 'AuthenticationService', '$rootScope', '$http'];\r\n\r\n function KendoDataSourceFactory(ENDPOINT, KendoDataSourceFilterGenerator, TokenManagerFactory, AuthenticationService, $rootScope, $http) {\r\n\r\n var mappers = {\r\n pageSize: angular.noop,\r\n page: angular.noop,\r\n filter: function(params, filter, useVersionFour) {\r\n if (filter) {\r\n filter = toOdataFilter(filter, useVersionFour);\r\n if (filter) {\r\n params.$filter = filter;\r\n }\r\n }\r\n },\r\n sort: function(params, orderby) {\r\n var expr = $.map(orderby, function(value) {\r\n var order = value.field.replace(/\\./g, \"/\");\r\n\r\n if (value.dir === \"desc\") {\r\n order += \" desc\";\r\n }\r\n\r\n return order;\r\n }).join(\",\");\r\n\r\n if (expr) {\r\n params.$orderby = expr;\r\n }\r\n },\r\n skip: function(params, skip) {\r\n if (skip) {\r\n params.$skip = skip;\r\n }\r\n },\r\n take: function(params, take) {\r\n if (take) {\r\n params.$top = take;\r\n }\r\n }\r\n };\r\n\r\n function toOdataFilter(filter, useOdataFour) {\r\n var result = [],\r\n logic = filter.logic || \"and\",\r\n idx,\r\n length,\r\n field,\r\n type,\r\n format,\r\n operator,\r\n value,\r\n ignoreCase,\r\n filters = filter.filters;\r\n\r\n for (idx = 0, length = filters.length; idx < length; idx++) {\r\n filter = filters[idx];\r\n field = filter.field;\r\n value = filter.value;\r\n operator = filter.operator;\r\n\r\n if (filter.filters) {\r\n filter = toOdataFilter(filter, useOdataFour);\r\n } else {\r\n ignoreCase = filter.ignoreCase;\r\n field = field.replace(/\\./g, \"/\");\r\n filter = odataFilters[operator];\r\n if (useOdataFour) {\r\n filter = odataFiltersVersionFour[operator];\r\n }\r\n\r\n if (operator === \"isnull\" || operator === \"isnotnull\") {\r\n filter = kendo.format(\"{0} {1} null\", field, filter);\r\n } else if (operator === \"isempty\" || operator === \"isnotempty\") {\r\n filter = kendo.format(\"{0} {1} ''\", field, filter);\r\n } else if (operator === odataFilters.any || operator === odataFilters.all) {\r\n value = toOdataFilter(filters[idx].params, useOdataFour).replace(\"(\", \"\").replace(\")\", \"\");\r\n format = \"{0}/{1}(child:{2})\";\r\n filter = kendo.format(format, field, operator, value);\r\n } else if (filter && value !== undefined) {\r\n type = $.type(value);\r\n if (type === \"string\") {\r\n format = \"'{1}'\";\r\n value = value.replace(/'/g, \"''\");\r\n\r\n if (ignoreCase === true) {\r\n field = \"tolower(\" + field + \")\";\r\n }\r\n\r\n } else if (type === \"date\") {\r\n if (useOdataFour) {\r\n format = \"{1:yyyy-MM-ddTHH:mm:ssZ}\";\r\n value = kendo.timezone.apply(value, 'Etc/UTC');\r\n } else {\r\n format = \"datetime'{1:yyyy-MM-ddTHH:mm:ss}'\";\r\n }\r\n } else {\r\n format = \"{1}\";\r\n }\r\n\r\n if (filter.length > 3) {\r\n if (filter !== \"substringof\") {\r\n format = \"{0}({2},\" + format + \")\";\r\n } else {\r\n format = \"{0}(\" + format + \",{2})\";\r\n if (operator === \"doesnotcontain\") {\r\n if (useOdataFour) {\r\n format = \"{0}({2},'{1}') eq -1\";\r\n filter = \"indexof\";\r\n } else {\r\n format += \" eq false\";\r\n }\r\n }\r\n }\r\n } else {\r\n format = \"{2} {0} \" + format;\r\n }\r\n\r\n filter = kendo.format(format, filter, value, field);\r\n }\r\n }\r\n\r\n result.push(filter);\r\n }\r\n\r\n filter = result.join(\" \" + logic + \" \");\r\n\r\n if (result.length > 1) {\r\n filter = \"(\" + filter + \")\";\r\n }\r\n\r\n return filter;\r\n }\r\n\r\n var odataFilters = {\r\n eq: \"eq\",\r\n neq: \"ne\",\r\n gt: \"gt\",\r\n gte: \"ge\",\r\n lt: \"lt\",\r\n lte: \"le\",\r\n contains: \"substringof\",\r\n doesnotcontain: \"substringof\",\r\n endswith: \"endswith\",\r\n startswith: \"startswith\",\r\n isnull: \"eq\",\r\n isnotnull: \"ne\",\r\n isempty: \"eq\",\r\n isnotempty: \"ne\",\r\n any: \"any\",\r\n all: \"all\"\r\n };\r\n\r\n var odataFiltersVersionFour = angular.extend({}, odataFilters, {\r\n contains: \"contains\"\r\n });\r\n\r\n function KendoDataSourceFactory(oArg) {\r\n angular.extend(this);\r\n this.oArg = oArg;\r\n this.geradorFiltros = KendoDataSourceFilterGenerator.iniciar();\r\n this.modelo = {};\r\n }\r\n\r\n KendoDataSourceFactory.prototype = {\r\n $adicionarFiltro: function(campo, operador, valor) {\r\n this.geradorFiltros.$adicionarFiltro(campo, operador, valor);\r\n return this;\r\n },\r\n $adicionarFiltroLambda: function(collection, lambdaOperator, expression) {\r\n this.geradorFiltros.$adicionarFiltroLambda(collection, lambdaOperator, expression);\r\n return this;\r\n },\r\n $setFiltro: function(filter) {\r\n this.geradorFiltros = filter;\r\n },\r\n $gerarDataSource: function() {\r\n return this.$gerarDataSourceChild(this);\r\n },\r\n $adicionarIdModelo: function(id) {\r\n this.modelo.id = id;\r\n return this;\r\n },\r\n $adicionarCampoModelo: function(campo, atributos) {\r\n if (!this.modelo.fields) {\r\n this.modelo.fields = {};\r\n }\r\n this.modelo.fields[campo] = atributos;\r\n return this;\r\n },\r\n $adicionarCampoAggregate: function(campo, atributos) {\r\n if (!this.aggregate) {\r\n this.aggregate = [];\r\n }\r\n this.aggregate.push({ field: campo, aggregate: atributos });\r\n return this;\r\n },\r\n $gerarDataSourceChild: function(parent) {\r\n return new kendo.data.DataSource({\r\n type: 'odata',\r\n transport: {\r\n read: function(options) {\r\n var params, value, option;\r\n\r\n params = {\r\n //$inlinecount: \"allpages\"\r\n };\r\n\r\n for (option in options.data) {\r\n if (mappers[option]) {\r\n mappers[option](params, options.data[option], true);\r\n } else {\r\n params[option] = options.data[option];\r\n }\r\n }\r\n\r\n params.$count = true;\r\n\r\n var query;\r\n angular.forEach(params, function(value, key) {\r\n if (!query) {\r\n query = \"?\" + key + \"=\" + value;\r\n } else {\r\n query += \"&\" + key + \"=\" + value;\r\n\r\n };\r\n });\r\n if (parent.oArg.lambda) {\r\n query += \"&\" + parent.oArg.lambda;\r\n }\r\n if (parent.oArg.expand) {\r\n query += \"&$expand=\" + parent.oArg.expand;\r\n }\r\n if (parent.oArg.apply) {\r\n query += \"&$apply=\" + parent.oArg.apply;\r\n }\r\n if (parent.oArg.select) {\r\n query += \"&$select=\" + parent.oArg.select;\r\n }\r\n\r\n var endpoint = parent.oArg.STS ? ENDPOINT.endpoint_stsOdata : parent.oArg.fornecedor ? ENDPOINT.endpoint_fornecedor : ENDPOINT.endpoint_backend;\r\n $http.get(endpoint + parent.oArg.endpoint + query, { headers: parent.oArg.header }).then(function(data) {\r\n options.success(data.data);\r\n });\r\n }\r\n },\r\n error: function(e) {\r\n $rootScope.$broadcast({\r\n 401: 'LOGOUT',\r\n 403: 'LOGOUT'\r\n }[e.status]);\r\n },\r\n aggregate: parent.aggregate,\r\n schema: {\r\n model: parent.modelo,\r\n\r\n data: function(data) {\r\n if (data['value']) {\r\n var itens = data['value'];\r\n itens.forEach(function(element) {\r\n delete element['@odata.type']\r\n });\r\n return itens;\r\n } else\r\n return data;\r\n },\r\n total: function(data) {\r\n if (data['@odata.count'])\r\n return data['@odata.count'];\r\n else\r\n return data.length;\r\n }\r\n },\r\n change: parent.oArg.change,\r\n batch: parent.oArg.batch,\r\n pageSize: parent.oArg.pageSize || 10,\r\n serverPaging: true,\r\n serverSorting: true,\r\n serverFiltering: true,\r\n filter: parent.geradorFiltros.filtros.length > 0 ? parent.geradorFiltros.$gerarFiltro() : null,\r\n sort: parent.oArg.sort || { field: \"Id\", dir: \"desc\" },\r\n group: parent.oArg.group,\r\n groupable: parent.oArg.groupable\r\n });\r\n }\r\n };\r\n\r\n function iniciar(oArg) {\r\n return new KendoDataSourceFactory(oArg);\r\n }\r\n\r\n function gerarDataSource(oArg) {\r\n return new kendo.data.DataSource({\r\n type: 'odata-v4',\r\n transport: {\r\n read: function(options) {\r\n var params, value, option;\r\n\r\n params = {\r\n //$inlinecount: \"allpages\"\r\n };\r\n\r\n for (option in options.data) {\r\n if (mappers[option]) {\r\n mappers[option](params, options.data[option], true);\r\n } else {\r\n params[option] = options.data[option];\r\n }\r\n }\r\n\r\n params.$count = true;\r\n\r\n var query;\r\n angular.forEach(params, function(value, key) {\r\n if (!query) {\r\n query = \"?\" + key + \"=\" + value;\r\n } else {\r\n query += \"&\" + key + \"=\" + value;\r\n }\r\n });\r\n var endpoint = parent.oArg.STS ? ENDPOINT.endpoint_stsOdata : parent.oArg.fornecedor ? ENDPOINT.endpoint_fornecedor : ENDPOINT.endpoint_backend;\r\n $http.get(endpoint + oArg.endpoint + query).then(function(data) {\r\n options.success(data.data);\r\n });\r\n },\r\n },\r\n error: function(e) {\r\n $rootScope.$broadcast({\r\n 401: 'LOGOUT',\r\n 403: 'LOGOUT'\r\n }[e.status]);\r\n },\r\n schema: {\r\n data: function(data) {\r\n if (data['value'])\r\n return data['value'];\r\n else\r\n return data;\r\n },\r\n total: function(data) {\r\n if (data['@odata.count'])\r\n return data['@odata.count'];\r\n else\r\n return data.length;\r\n },\r\n parse: function(data) {\r\n console.log(data);\r\n }\r\n },\r\n change: oArg.change,\r\n batch: oArg.batch,\r\n pageSize: oArg.pageSize || 10,\r\n serverPaging: true,\r\n serverSorting: true,\r\n serverFiltering: true,\r\n filter: geradorFiltros.filtros.length > 0 ? geradorFiltros.$gerarFiltro() : null,\r\n sort: { field: \"Id\", dir: \"desc\" }\r\n });\r\n }\r\n\r\n return {\r\n gerarDataSource: gerarDataSource,\r\n iniciar: iniciar\r\n };\r\n }\r\n})();","(function () {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge')\r\n .factory('ModulesLoaded', ModulesLoaded);\r\n\r\n function ModulesLoaded() {\r\n\r\n var loaded = {};\r\n\r\n return { \r\n GetLoaded: function(){\r\n return loaded;\r\n },\r\n };\r\n }\r\n})();","(function () {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge')\r\n .factory('SessionManagerFactory', SessionManagerFactory);\r\n\r\n SessionManagerFactory.$inject = ['Session', 'TokenManagerFactory', '$rootScope'];\r\n function SessionManagerFactory(Session, TokenManagerFactory, $rootScope) {\r\n\r\n function CreateSession(token) {\r\n Session.Create(TokenManagerFactory.DecodeToken(token));\r\n }\r\n\r\n function DestroySession() {\r\n Session.Destroy();\r\n }\r\n\r\n function GetSession() {\r\n return $rootScope.currentUser;\r\n }\r\n\r\n function IsAuthorized(authorizedRoles) {\r\n if (!angular.isArray(authorizedRoles)) {\r\n authorizedRoles = [authorizedRoles];\r\n }\r\n return (IsAuthenticated() &&\r\n authorizedRoles.indexOf(Session.userRole) !== -1);\r\n }\r\n\r\n return {\r\n CreateSession: CreateSession,\r\n DestroySession: DestroySession,\r\n IsAuthorized: IsAuthorized,\r\n GetSession: GetSession\r\n };\r\n }\r\n})();","(function () {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge')\r\n .factory('TokenManagerFactory', TokenManagerFactory);\r\n\r\n TokenManagerFactory.$inject = ['$window', 'jwtHelper', '$location'];\r\n function TokenManagerFactory($window, jwtHelper, $location) {\r\n var storage;\r\n\r\n function RemoveToken() {\r\n return hub().onConnect().then(function () {\r\n return hub().del('jwt_token');\r\n })\r\n }\r\n\r\n function GetToken() {\r\n return hub().onConnect().then(function () {\r\n return hub().get('jwt_token');\r\n })\r\n }\r\n\r\n function SetToken(token) {\r\n hub().onConnect().then(function () {\r\n return hub().set('jwt_token', token);\r\n },\r\n function (e) {\r\n })\r\n }\r\n\r\n function DecodeToken(token) {\r\n return jwtHelper.decodeToken(token || GetToken());\r\n }\r\n\r\n function hub() {\r\n if (!storage) {\r\n storage = new CrossStorageClient('https://' + $location.host() + ':' + $location.port() + '/hub.html')\r\n }\r\n return storage;\r\n }\r\n\r\n return { \r\n GetToken: GetToken,\r\n SetToken: SetToken,\r\n RemoveToken: RemoveToken,\r\n DecodeToken: DecodeToken,\r\n hub: hub\r\n\r\n };\r\n }\r\n})();","(function () {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge')\r\n .factory('UserManagerFactory', UserManagerFactory);\r\n\r\n UserManagerFactory.$inject = ['$window', 'jwtHelper', '$location', 'TokenManagerFactory'];\r\n function UserManagerFactory($window, jwtHelper, $location, TokenManagerFactory) {\r\n\r\n function RemoveUser() {\r\n return TokenManagerFactory.hub().onConnect().then(function () {\r\n return TokenManagerFactory.hub().del('user');\r\n })\r\n }\r\n\r\n function GetUser() {\r\n return TokenManagerFactory.hub().onConnect().then(function () {\r\n return TokenManagerFactory.hub().get('user');\r\n })\r\n }\r\n\r\n function SetUser(user) {\r\n TokenManagerFactory.hub().onConnect().then(function () {\r\n return TokenManagerFactory.hub().set('user', user);\r\n },\r\n function (e) {\r\n console.log(e);\r\n })\r\n }\r\n\r\n return { \r\n GetUser: GetUser,\r\n SetUser: SetUser,\r\n RemoveUser: RemoveUser,\r\n };\r\n }\r\n})();","(function () {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge')\r\n .factory('VisibilidadeMenuLateralFactory', VisibilidadeMenuLateralFactory);\r\n\r\n function VisibilidadeMenuLateralFactory() {\r\n\r\n return {\r\n getVisivel: getVisivel,\r\n setVisivel: setVisivel\r\n };\r\n\r\n var visivel;\r\n\r\n function getVisivel() {\r\n if (visivel == undefined) {\r\n visivel = true;\r\n }\r\n return visivel;\r\n };\r\n\r\n function setVisivel(valor) {\r\n visivel = valor;\r\n };\r\n }\r\n})();","(function() {\r\n\r\n 'use strict';\r\n\r\n angular.module('bunge.system')\r\n .factory('AuthenticationInterceptor', [\r\n '$q', '$rootScope', 'TokenManagerFactory', 'ENDPOINT_URI',\r\n function($q, $rootScope, TokenManagerFactory, ENDPOINT_URI) {\r\n return {\r\n request: function(config) {\r\n var appKey = null;\r\n\r\n if (typeof $rootScope.currentApp != 'undefined' && $rootScope.currentApp != '')\r\n appKey = $rootScope.currentApp;\r\n\r\n config.headers['X-APPKEY'] = appKey;\r\n\r\n if ($rootScope.funcAtual)\r\n config.headers['X-FUNCTIONALITY'] = $rootScope.funcAtual.publicKey;\r\n\r\n\r\n if (!(config.url.startsWith(ENDPOINT_URI.endpoint_backendReq) || config.url.startsWith(ENDPOINT_URI.endpoint_sts) || config.url.startsWith(ENDPOINT_URI.endpoint_fornecedorReq))) {\r\n return config;\r\n }\r\n\r\n if (config.url.indexOf(\"user-authenticate\") > 0 || config.url.indexOf(\"verificar-usuario\") > 0 || config.url.indexOf(\"pedido/executar-pedido\") > 0 || config.url.indexOf(\"pedido/obter-pedido/\") > 0 || config.url.toUpperCase() == (ENDPOINT_URI.endpoint_backendReq + \"pedido\").toUpperCase()) {\r\n return config;\r\n }\r\n\r\n return TokenManagerFactory.GetToken().then(function(token) {\r\n var canceler = $q.defer();\r\n config.timeout = canceler.promise;\r\n if (!token) {\r\n $rootScope.$broadcast('LOGOUT');\r\n canceler.resolve();\r\n return;\r\n } else if (config.url.indexOf('token-refresh') < 0) {\r\n $rootScope.$broadcast('REFRESH_TOKEN');\r\n }\r\n if (token) {\r\n config.headers['Authorization'] = 'Bearer ' + token;\r\n }\r\n return config;\r\n });\r\n },\r\n response: function(response) {\r\n return response;\r\n },\r\n responseError: function(response) {\r\n $rootScope.$broadcast({\r\n 401: 'LOGOUT',\r\n 403: 'LOGOUT',\r\n }[response.status], response);\r\n return $q.reject(response);\r\n }\r\n };\r\n }\r\n ]);\r\n})();","(function () {\r\n'use strict';\r\n\r\nangular.module('bunge.system')\r\n .service('spinnerHttpResponseInterceptor', ['$q', '$rootScope', '$log', 'usSpinnerService',\r\n function ($q, $rootScope, $log, usSpinnerService) {\r\n\r\n var xhrCreations = 0;\r\n var xhrResolutions = 0;\r\n $rootScope.spinnerOpts = {\r\n lines: 17 // The number of lines to draw\r\n , length: 2 // The length of each line\r\n , width: 2 // The line thickness\r\n , radius: 20 // The radius of the inner circle\r\n , scale: 1 // Scales overall size of the spinner\r\n , corners: 1 // Corner roundness (0..1)\r\n , color: '#000' // #rgb or #rrggbb or array of colors\r\n , opacity: 0.05 // Opacity of the lines\r\n , rotate: 31 // The rotation offset\r\n , direction: 1 // 1: clockwise, -1: counterclockwise\r\n , speed: 1 // Rounds per second\r\n , trail: 50 // Afterglow percentage\r\n , fps: 20 // Frames per second when using setTimeout() as a fallback for CSS\r\n , zIndex: 2e9 // The z-index (defaults to 2000000000)\r\n , className: 'spinner' // The CSS class to assign to the spinner\r\n , top: '50%' // Top position relative to parent\r\n , left: '50%' // Left position relative to parent\r\n , shadow: true // Whether to render a shadow\r\n , hwaccel: true // Whether to use hardware acceleration\r\n , position: 'absolute' // Element positioning\r\n }\r\n\r\n function isLoading() {\r\n return xhrResolutions < xhrCreations;\r\n }\r\n\r\n function updateStatus() {\r\n $rootScope.loading = isLoading();\r\n if ($rootScope.loading) {\r\n usSpinnerService.spin('spinner-1');\r\n } else {\r\n usSpinnerService.stop('spinner-1');\r\n }\r\n }\r\n\r\n return {\r\n request: function (config) {\r\n xhrCreations++;\r\n updateStatus();\r\n return config;\r\n },\r\n requestError: function (rejection) {\r\n xhrResolutions++;\r\n updateStatus();\r\n $log.error('Request error:', rejection);\r\n return $q.reject(rejection);\r\n },\r\n response: function (response) {\r\n xhrResolutions++;\r\n updateStatus();\r\n return response;\r\n },\r\n responseError: function (rejection) {\r\n xhrResolutions++;\r\n updateStatus();\r\n $log.error('Response error:', rejection);\r\n return $q.reject(rejection);\r\n }\r\n };\r\n }])\r\n\r\n .config(['$httpProvider', function ($httpProvider) {\r\n\r\n\r\n if (!$httpProvider.defaults.headers.get) {\r\n $httpProvider.defaults.headers.get = {};\r\n }\r\n\r\n // Answer edited to include suggestions from comments\r\n // because previous version of code introduced browser-related errors\r\n\r\n //disable IE ajax request caching\r\n $httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT';\r\n // extra\r\n $httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';\r\n $httpProvider.defaults.headers.get['Pragma'] = 'no-cache';\r\n\r\n $httpProvider.interceptors.push('spinnerHttpResponseInterceptor');\r\n }]);\r\n})();\r\n","(function () {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.system')\r\n .service('AuthenticationService', AuthenticationService);\r\n\r\n AuthenticationService.$inject = ['SessionManagerFactory', 'ENDPOINT_URI', '$resource', 'TokenManagerFactory', '$state', 'UserManagerFactory','$http'];\r\n function AuthenticationService(SessionManagerFactory, ENDPOINT_URI, $resource, TokenManagerFactory, $state, UserManagerFactory, $http) {\r\n\r\n var Program = $resource(ENDPOINT_URI.endpoint_sts + 'authenticate', {}, {\r\n gerarToken: {\r\n url: ENDPOINT_URI.endpoint_sts + 'user-authenticate',\r\n method: 'POST',\r\n transformResponse: function (data, headersGetter, status) {\r\n return { content: data ? data.replace(/^\"(.*)\"$/, '$1') : data };\r\n }\r\n },\r\n renovarToken: {\r\n url: ENDPOINT_URI.endpoint_sts + 'token-refresh',\r\n method: 'POST',\r\n transformResponse: function (data, headersGetter, status) {\r\n return { content: data ? data.replace(/^\"(.*)\"$/, '$1') : data };\r\n }\r\n }\r\n });\r\n\r\n function Login(user) {\r\n var program = new Program();\r\n program.login = user.login;\r\n program.password = user.password;\r\n return program.$gerarToken().then(function (res) {\r\n var token = res.content;\r\n return $http.get(ENDPOINT_URI.endpoint_backendReq + 'fornecedor/verificar-usuario/'+user.login+'/',{\r\n headers: { 'Authorization': 'Bearer ' + token }\r\n }).then(function (resVerificar) {\r\n SetCredentials(token, JSON.stringify(resVerificar.data));\r\n token = null;\r\n resVerificar.status = 200;\r\n return resVerificar;\r\n }, function (resVerificar) {\r\n token = null;\r\n if (!resVerificar.data.message && !resVerificar.data.Message) {\r\n try {\r\n JSON.parse(resVerificar.data);\r\n } catch (e) {\r\n var msg = resVerificar.data;\r\n resVerificar.data = {message:msg};\r\n }\r\n }\r\n return resVerificar;\r\n });\r\n }, function (res) {\r\n return res;\r\n });\r\n }\r\n\r\n function SetCredentials(token, usuario) {\r\n if (usuario) {\r\n UserManagerFactory.SetUser(usuario);\r\n }\r\n SessionManagerFactory.CreateSession(token);\r\n TokenManagerFactory.SetToken(token);\r\n }\r\n\r\n function ClearCredentials(redirect) {\r\n TokenManagerFactory.RemoveToken();\r\n UserManagerFactory.RemoveUser();\r\n // $http.defaults.headers.common.Authorization = 'Basic';\r\n SessionManagerFactory.DestroySession();\r\n if (redirect) {\r\n $state.go('login');\r\n }\r\n }\r\n\r\n function RenewToken() {\r\n var program = new Program();\r\n return program.$renovarToken().then(function (res) {\r\n SetCredentials(res.content);\r\n return true;\r\n }, function (res) {\r\n return false;\r\n });\r\n }\r\n\r\n return {\r\n Login: Login,\r\n SetCredentials: SetCredentials,\r\n ClearCredentials: ClearCredentials,\r\n RenewToken: RenewToken\r\n };\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge.system').service('DynamicModulesLoader', DynamicModulesLoader);\r\n\r\n DynamicModulesLoader.$inject = ['Session', '$ocLazyLoad', 'ADM_NAV_DYN_OPTIONS', '$q', 'FOR_NAV_DYN_OPTIONS', 'ModulesLoaded'];\r\n\r\n function DynamicModulesLoader(Session, $ocLazyLoad, ADM_NAV_DYN_OPTIONS, $q, FOR_NAV_DYN_OPTIONS, ModulesLoaded) {\r\n\r\n function loadModulesFromToken(portal) {\r\n var modules = Session.GetPortalModules();\r\n var promises = [];\r\n var dynamic = portal == \"administracao\" ? ADM_NAV_DYN_OPTIONS : FOR_NAV_DYN_OPTIONS;\r\n Object.keys(modules).map(function (key) {\r\n var item = modules[key];\r\n item.menu.forEach(function (value) {\r\n if (dynamic[value.internalKey]) {\r\n promises.push($ocLazyLoad.load({ serie: true, cache: false, files: dynamic[value.internalKey] }));\r\n }\r\n });\r\n });\r\n ModulesLoaded.GetLoaded()[portal] = true;\r\n return $q.all(promises);\r\n };\r\n\r\n return {\r\n LoadModulesFromToken: loadModulesFromToken,\r\n };\r\n }\r\n}());","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.system')\r\n .factory('FlashService', FlashService);\r\n\r\n FlashService.$inject = ['$rootScope'];\r\n function FlashService($rootScope) {\r\n var service = {};\r\n\r\n service.Success = Success;\r\n service.Error = Error;\r\n service.clearFlashMessage = clearFlashMessage;\r\n\r\n initService();\r\n\r\n return service;\r\n\r\n function initService() {\r\n $rootScope.$on('$locationChangeStart', function () {\r\n clearFlashMessage();\r\n }); \r\n }\r\n\r\n function clearFlashMessage() {\r\n var flash = $rootScope.flash;\r\n if (flash) {\r\n if (!flash.keepAfterLocationChange) {\r\n delete $rootScope.flash;\r\n } else {\r\n // only keep for a single location change\r\n flash.keepAfterLocationChange = false;\r\n }\r\n }\r\n }\r\n function Success(message, keepAfterLocationChange) {\r\n $rootScope.flash = {\r\n message: message,\r\n type: 'success',\r\n keepAfterLocationChange: keepAfterLocationChange\r\n };\r\n }\r\n\r\n function Error(message, keepAfterLocationChange) {\r\n $rootScope.flash = {\r\n message: message,\r\n type: 'error',\r\n keepAfterLocationChange: keepAfterLocationChange\r\n };\r\n }\r\n }\r\n\r\n})();","(function () {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.system')\r\n .factory('ModalAdicionarUsuarioService', ModalUsuarioExternoService);\r\n\r\n ModalUsuarioExternoService.$inject = ['$resource', 'ENDPOINT_URI'];\r\n function ModalUsuarioExternoService($resource, ENDPOINT_URI) {\r\n var MyResource = $resource(ENDPOINT_URI.endpoint_backendReq + 'fornecedor-usuario', {}, {\r\n criarNovo: {\r\n url: ENDPOINT_URI.endpoint_backendReq + 'fornecedor-usuario',\r\n method: 'POST',\r\n },\r\n editar: {\r\n url: ENDPOINT_URI.endpoint_backendReq + 'fornecedor-usuario',\r\n method: 'PUT',\r\n },\r\n });\r\n\r\n function criarNovo(data) {\r\n var myResource = new MyResource();\r\n myResource.DocumentoFornecedor = data.CodigoFornecedor,\r\n myResource.Email = data.Email,\r\n myResource.Documento = data.NumeroDocumento,\r\n myResource.Nome = data.Nome\r\n return myResource.$criarNovo();\r\n }\r\n\r\n\r\n function editar(data) {\r\n var myResource = new MyResource();\r\n myResource.DocumentoFornecedor = data.CodigoFornecedor,\r\n myResource.Email = data.Email,\r\n myResource.Documento = data.NumeroDocumento,\r\n myResource.Nome = data.Nome,\r\n myResource.Id = data.CodigoUsuario\r\n return myResource.$editar();\r\n }\r\n\r\n return {\r\n criarNovo: criarNovo,\r\n editar: editar,\r\n };\r\n }\r\n})();\r\n","(function () {\r\n\r\n 'use strict';\r\n\r\n angular\r\n .module('bunge.system')\r\n .factory('ModalUsuarioExternoService', ModalUsuarioExternoService);\r\n\r\n ModalUsuarioExternoService.$inject = ['$resource', 'ENDPOINT_URI'];\r\n function ModalUsuarioExternoService($resource, ENDPOINT_URI) {\r\n var MyResource = $resource(ENDPOINT_URI.endpoint_backendReq + 'update-user-status', {}, {\r\n atualizarStatusEmail: {\r\n url: ENDPOINT_URI.endpoint_backendReq + 'fornecedor/atualizar-status-email',\r\n method: 'PUT',\r\n },\r\n });\r\n\r\n function atualizarStatusEmail(data) {\r\n var myResource = new MyResource();\r\n myResource.Documento = data.Documento;\r\n myResource.Email = data.Email;\r\n myResource.Status = data.Status;\r\n return myResource.$atualizarStatusEmail();\r\n }\r\n\r\n return {\r\n atualizarStatusEmail: atualizarStatusEmail,\r\n };\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge.system').service('NavigationService', Navigation);\r\n\r\n Navigation.$inject = ['$rootScope', 'NAV_OPTIONS', 'Session'];\r\n\r\n function Navigation($rootScope, NAV_OPTIONS, Session) {\r\n var menuItens = NAV_OPTIONS;\r\n\r\n function getUserSubMenu(appName) {\r\n var subMenuItens = []; \r\n \r\n var appList = Session.GetAppsByName(appName);\r\n for (var appIndex in appList) {\r\n var subMenu = appList[appIndex].menu;\r\n var permission = appList[appIndex].permissions;\r\n\r\n for (var menuIndex in subMenu) {\r\n var item = subMenu[menuIndex];\r\n\r\n var incluir = true;\r\n\r\n subMenuItens.forEach(function (value) {\r\n if (value.internalKey == item.internalKey) {\r\n incluir = false;\r\n }\r\n });\r\n\r\n if (item.internalKey in permission && incluir && !item.invisivel) {\r\n subMenuItens.push(item);\r\n }\r\n }\r\n }\r\n\r\n return subMenuItens.sort(function (a, b) {\r\n return a.order - b.order;\r\n });\r\n }\r\n\r\n function buildUserMenu() {\r\n if ($rootScope.currentUser) {\r\n for (var menuIndex in menuItens) {\r\n var menuItem = menuItens[menuIndex];\r\n var app = Session.CheckAppPermission(menuItem.appName);\r\n if (menuItem.isRootMenu || app) {\r\n if (app) {\r\n menuItem.legenda = app.descriptionApp;\r\n }\r\n $rootScope.navPermissions.push(menuItem);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function canISeeThisTab(appName, functionality) {\r\n\r\n var appList = Session.GetAppsByName(appName);\r\n for (var appIndex in appList) {\r\n var permissions = appList[appIndex].permissions;\r\n if (permissions[functionality] && !permissions[functionality].ReadOnly)\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return {\r\n BuildUserMenu: buildUserMenu,\r\n GetUserSubMenu: getUserSubMenu,\r\n CanISeeThisTab: canISeeThisTab\r\n };\r\n }\r\n}());","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge.system').service('Session', Session);\r\n\r\n Session.$inject = ['$rootScope', 'APP_TOKEN_NAMES', 'NAV_OPTIONS', 'ADM_NAV_OPTIONS', 'FOR_NAV_OPTIONS', 'CLAIMS_TYPE', 'UserManagerFactory'];\r\n function Session($rootScope, APP_TOKEN_NAMES, NAV_OPTIONS, ADM_NAV_OPTIONS, FOR_NAV_OPTIONS, CLAIMS_TYPE, UserManagerFactory) {\r\n\r\n function Create(parsedToken) {\r\n var userType = new Array(null, \"Externo\", \"Interno\", \"Root\");\r\n var userStatus = new Array(null, \"Normal\", \"Expired\", \"Blocked\", \"Juridical\");\r\n\r\n var apps = [];\r\n var role = [];\r\n var claims = parsedToken.Claims;\r\n var profile = 'normal';\r\n\r\n this.userId = null;\r\n this.userRole = null;\r\n this.userName = null;\r\n this.userStatus = null;\r\n this.groupList = [];\r\n\r\n UserManagerFactory.GetUser().then(function (user) {\r\n if (user) {\r\n $rootScope.currentUser.userSystemName = JSON.parse(user).nome.toUpperCase();\r\n }\r\n });\r\n\r\n for (var claimIndex in claims) {\r\n var claim = claims[claimIndex];\r\n var claimType = claim.Type.toLowerCase();\r\n\r\n if (claimType == \"id\") {\r\n this.userId = claim.Value;\r\n }\r\n else if (claimType == \"login\") {\r\n this.userName = claim.Value;\r\n }\r\n else if (claimType == \"userstatus\") {\r\n this.userStatus = userStatus[claim.Value];\r\n }\r\n else if (claimType == \"isAdmin\" && claim.Value == true) {\r\n profile = 'admin';\r\n }\r\n else if (claimType == \"usertype\") {\r\n this.userRole = userType[claim.Value];\r\n\r\n if (userType[claim.Value] == \"Root\")\r\n profile = 'root';\r\n }\r\n else if (claimType == \"role\") {\r\n role.push(JSON.parse(claims[claimIndex].Value));\r\n }\r\n }\r\n\r\n for (var groupIndex in role) {\r\n var group = role[groupIndex];\r\n var newGroup = { EmpresaList: group.EmpresaList, PortalList: [] };\r\n this.groupList.push(newGroup);\r\n if (group.PortalClaim) {\r\n var newPortal = { PublicKey: group.PortalClaim.PublicKey, NmApp: group.PortalClaim.Description, AppList: {} };\r\n newGroup.PortalList.push(newPortal);\r\n for (var appIndex in group.PortalClaim.AppList) {\r\n var app = group.PortalClaim.AppList[appIndex];\r\n\r\n var name = null;\r\n var label = null;\r\n var route = false;\r\n\r\n var menu = [];\r\n var funcList = [];\r\n var publicKey = app.PublicKey;\r\n\r\n var appName = APP_TOKEN_NAMES[publicKey];\r\n var descriptionApp = app.NmApp;\r\n var externalApp = false;\r\n\r\n switch (appName) {\r\n case 'fornecedor':\r\n name = NAV_OPTIONS.fornecedor.appName;\r\n\r\n funcList = getPermissionList(FOR_NAV_OPTIONS, app.FunctionalityList, profile);\r\n\r\n Object.keys(FOR_NAV_OPTIONS).map(function (key) {\r\n var item = FOR_NAV_OPTIONS[key];\r\n\r\n if (item.internalKey in funcList)\r\n menu.push(FOR_NAV_OPTIONS[key]);\r\n });\r\n \r\n break;\r\n case 'edi':\r\n case 'ordem-carga':\r\n case 'agendamento':\r\n case 'tempo-em-fila':\r\n case 'monitoramento':\r\n name = NAV_OPTIONS.logistico.appName;\r\n\r\n break;\r\n case 'portaladministrador':\r\n name = NAV_OPTIONS.administrador.appName;\r\n funcList = getPermissionList(ADM_NAV_OPTIONS, app.FunctionalityList, profile);\r\n\r\n Object.keys(ADM_NAV_OPTIONS).map(function (key) {\r\n var item = ADM_NAV_OPTIONS[key];\r\n\r\n if (item.internalKey in funcList)\r\n menu.push(ADM_NAV_OPTIONS[key]);\r\n });\r\n\r\n break;\r\n }\r\n\r\n newPortal.AppList[name] = { name: name, permissions: funcList, menu: menu, publicKey: publicKey, descriptionApp: newPortal.NmApp };\r\n }\r\n }\r\n }\r\n\r\n $rootScope.setCurrentUser(this);\r\n }\r\n\r\n function getPermissionList(navOptions, functionalityList, profile) {\r\n var funcList = [];\r\n\r\n for (var funcIndex in functionalityList) {\r\n var func = functionalityList[funcIndex];\r\n var readOnly = func.ReadOnly;\r\n\r\n var obj = {\r\n Id: func.Id, Description: func.Description,\r\n PublicKey: func.PublicKey, ReadOnly: readOnly\r\n };\r\n\r\n for (var navIndex in navOptions) {\r\n var menuItem = navOptions[navIndex];\r\n\r\n if (profile == 'root') {\r\n obj.ReadOnly = false;\r\n funcList[menuItem.internalKey] = obj;\r\n }\r\n\r\n else if (profile == 'admin' && typeof menuItem.onlyAdmin != 'undefined' && menuItem.onlyAdmin == true || menuItem.publicKey == func.PublicKey)\r\n funcList[menuItem.internalKey] = obj;\r\n\r\n else if (menuItem.publicKey == func.PublicKey)\r\n funcList[menuItem.internalKey] = obj;\r\n }\r\n }\r\n\r\n\r\n return funcList;\r\n }\r\n\r\n\r\n function Destroy() {\r\n this.userId = null;\r\n this.userRole = null;\r\n this.userName = null;\r\n this.userStatus = null;\r\n this.navPermissions = null;\r\n this.groupList = null;\r\n\r\n $rootScope.setCurrentUser(null);\r\n }\r\n\r\n function hasApp(appName) {\r\n return this.GetFirstAppByName(appName);\r\n }\r\n\r\n function getFirstPortalByKey(publicKey) {\r\n for (var groupIndex in this.groupList) {\r\n for (var portalIndex in this.groupList[groupIndex].PortalList) {\r\n var portal = this.groupList[groupIndex].PortalList[portalIndex];\r\n if (portal.PublicKey == publicKey) {\r\n return portal;\r\n }\r\n };\r\n };\r\n return null;\r\n };\r\n\r\n function getFirstAppByName(appName) {\r\n for (var groupIndex in this.groupList) {\r\n for (var portalIndex in this.groupList[groupIndex].PortalList) {\r\n for (var appIndex in this.groupList[groupIndex].PortalList[portalIndex].AppList) {\r\n if (appIndex == appName)\r\n return this.groupList[groupIndex].PortalList[portalIndex].AppList[appIndex];\r\n };\r\n };\r\n };\r\n return null;\r\n };\r\n\r\n function getAppsByName(appName) {\r\n var appList = [];\r\n for (var groupIndex in this.groupList) {\r\n for (var portalIndex in this.groupList[groupIndex].PortalList) {\r\n for (var appIndex in this.groupList[groupIndex].PortalList[portalIndex].AppList) {\r\n if (appIndex == appName)\r\n appList.push(this.groupList[groupIndex].PortalList[portalIndex].AppList[appIndex]);\r\n };\r\n };\r\n };\r\n return appList;\r\n };\r\n \r\n\r\n function getPortalModules(){\r\nvar portalList = [];\r\n\r\n for (var groupIndex in this.groupList) {\r\n for (var portalIndex in this.groupList[groupIndex].PortalList) {\r\n if(!portalList[this.groupList[groupIndex].PortalList[portalIndex].PublicKey]){\r\n portalList[this.groupList[groupIndex].PortalList[portalIndex].PublicKey] = {name: this.groupList[groupIndex].PortalList[portalIndex].NmApp, menu:[]};\r\n }\r\n\r\n var portal = portalList[this.groupList[groupIndex].PortalList[portalIndex].PublicKey];\r\n for (var appIndex in this.groupList[groupIndex].PortalList[portalIndex].AppList) {\r\n this.groupList[groupIndex].PortalList[portalIndex].AppList[appIndex].menu.forEach(function (value){\r\n if(!portal.menu[value.publicKey]){\r\nportal.menu.push({internalKey: value.internalKey, publicKey: value.publicKey});\r\n }\r\n });\r\n };\r\n\r\n };\r\n };\r\n return portalList;\r\n };\r\n\r\n return {\r\n Destroy: Destroy,\r\n Create: Create,\r\n GetFirstAppByName: getFirstAppByName,\r\n GetAppsByName: getAppsByName,\r\n GetFirstPortalByKey: getFirstPortalByKey,\r\n CheckAppPermission: hasApp,\r\n GetPortalModules: getPortalModules\r\n };\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('bunge.system').service('ViewService', viewService);\r\n viewService.$inject = ['Session', '$state'];\r\n\r\n function viewService(Session, $state) {\r\n function goToFirstView(appName) {\r\n var subMenus = [];\r\n if ($state.current.name == appName) {\r\n var apps = Session.GetAppsByName(appName);\r\n for (var appIndex in apps) {\r\n var subMenu = apps[appIndex].menu.sort(function (a, b) {\r\n return a.order - b.order;\r\n })[0];\r\n\r\n subMenus.push(subMenu);\r\n }\r\n\r\n var lowestMenu = subMenus.sort(function (a, b) {\r\n return a.order - b.order;\r\n })[0];\r\n\r\n if (lowestMenu) {\r\n $state.go(lowestMenu.route);\r\n } else {\r\n $state.go('home');\r\n }\r\n }\r\n }\r\n\r\n function getViewPublicKey(appName) {\r\n var app = Session.GetFirstAppByName(appName);\r\n var publicKey = null;\r\n\r\n if (app)\r\n publicKey = app.publicKey;\r\n\r\n return publicKey;\r\n }\r\n\r\n function getCurrentAppFunc() {\r\n var retorno;\r\n var app;\r\n var ehModulo = false;\r\n if ($state.current.name.indexOf(\"administracao\") > -1 || $state.current.name.indexOf(\"fornecedor\") > -1) {\r\n ehModulo = true;\r\n var apps = Session.GetAppsByName($state.current.name.indexOf(\"administracao\") > -1 ? \"administracao\" : \"fornecedor\");\r\n for (var appIndex in apps) {\r\n app = apps[appIndex];\r\n for (var indexFunc in app.menu) {\r\n if ($state.current.name.indexOf(app.menu[indexFunc].route) > -1) {\r\n retorno = app.menu[indexFunc];\r\n }\r\n }\r\n }\r\n }\r\n if ((app && !retorno) || (ehModulo && !app)) {\r\n // $state.go('home');\r\n return;\r\n }\r\n return retorno;\r\n };\r\n\r\n return {\r\n GoToFirstView: goToFirstView,\r\n GetViewPublicKey: getViewPublicKey,\r\n GetCurrentAppFunc: getCurrentAppFunc\r\n };\r\n }\r\n\r\n}());"]}