public void Criar(PotencialdoKAporSubfamilia mPotencialdoKAporSubfamilia, List <Model.OrcamentoDetalhado> lstOrcamentoDetalhado, Guid representanteId, int numTrimestre)
        {
            PotencialdoKAporProduto mPotencialdoKAporProduto = null;

            var lstOrcamentoporSegSubFamilia = (from x in lstOrcamentoDetalhado
                                                group x by string.Format("{0}/{1}/{2}/{3}", x.Segmento.Id, x.Familia.Id, x.SubFamilia.Id, x.Produto.Id));

            foreach (var OrcaProduto in lstOrcamentoporSegSubFamilia)
            {
                mPotencialdoKAporSubfamilia = RepositoryService.PotencialdoKAporSubfamilia.Retrieve(mPotencialdoKAporSubfamilia.ID.Value);
                if (OrcaProduto.First().Produto.Id != Guid.Empty)
                {
                    var tempProduto = RepositoryService.PotencialdoKAporProduto.Obter(representanteId, OrcaProduto.First().Produto.Id, OrcaProduto.First().SubFamilia.Id, mPotencialdoKAporSubfamilia.ID.Value, (int)mPotencialdoKAporSubfamilia.Trimestre);

                    if (tempProduto == null)
                    {
                        mPotencialdoKAporProduto           = new PotencialdoKAporProduto(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider);
                        mPotencialdoKAporProduto.ID        = Guid.NewGuid();
                        mPotencialdoKAporProduto.Ano       = mPotencialdoKAporSubfamilia.Ano;
                        mPotencialdoKAporProduto.Trimestre = numTrimestre;
                        mPotencialdoKAporProduto.Produto   = new Lookup(OrcaProduto.First().Produto.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Product>());
                        mPotencialdoKAporProduto.PotencialdoKAporSubfamilia = new Lookup(mPotencialdoKAporSubfamilia.ID.Value, SDKore.Crm.Util.Utility.GetEntityName <Model.PotencialdoKAporSubfamilia>());
                        mPotencialdoKAporProduto.Nome = OrcaProduto.First().Produto.Name;
                        mPotencialdoKAporProduto.KAouRepresentante = new Lookup(representanteId, SDKore.Crm.Util.Utility.GetEntityName <Model.Contato>());

                        RepositoryService.PotencialdoKAporProduto.Create(mPotencialdoKAporProduto);
                        ServiceMetaDetalhadadoKAporProduto.Criar(mPotencialdoKAporProduto);
                    }
                }
            }
        }
        public void RetornoDWKaProduto(int ano, int trimestre)
        {
            List <MetadaUnidade> lstMetadaUnidade = RepositoryService.MetadaUnidade.ListarMetas(ano);

            if (lstMetadaUnidade.Count == 0)
            {
                return;
            }

            DataTable dtMetaCanal = RepositoryService.PotencialdoKAporProduto.ListarMetaTrimestreDW(ano, trimestre, lstMetadaUnidade);

            foreach (DataRow item in dtMetaCanal.Rows)
            {
                UnidadeNegocio mUnidadeNegocio = RepositoryService.UnidadeNegocio.ObterPorChaveIntegracao(item["CD_Unidade_Negocio"].ToString());
                Contato        mContato        = RepositoryService.Contato.ObterPor(item["CD_representante"].ToString());
                Product        mProduto        = RepositoryService.Produto.ObterPor(item["cd_item"].ToString());

                if (mUnidadeNegocio != null && mContato != null && mProduto != null)
                {
                    PotencialdoKAporProduto mPotencialdoKAporProduto = RepositoryService.PotencialdoKAporProduto.Obter(mUnidadeNegocio.ID.Value, mContato.ID.Value, Convert.ToInt32(item["cd_ano"].ToString()), trimestre, mProduto.ID.Value);
                    if (mPotencialdoKAporProduto != null)
                    {
                        mPotencialdoKAporProduto.PotencialRealizado = decimal.Parse(item["vlr"].ToString());
                        mPotencialdoKAporProduto.QtdeRealizada      = decimal.Parse(item["qtde"].ToString());

                        RepositoryService.PotencialdoKAporProduto.Update(mPotencialdoKAporProduto);
                    }
                }
            }
        }
Exemplo n.º 3
0
        public void Calcular(PotencialdoKAporProduto mPotencialdoKAporProduto, Trimestre trimestre, ref decimal valor, ref int quantidade)
        {
            decimal vlr  = 0;
            int     qtde = 0;

            List <MetaDetalhadadoKAporProduto> lstMetaDetalhadadoKAporProduto = RepositoryService.MetaDetalhadadoKAporProduto.ListarPor(mPotencialdoKAporProduto.ID.Value);

            foreach (MetaDetalhadadoKAporProduto prod in lstMetaDetalhadadoKAporProduto)
            {
                #region
                if (prod.Mes == trimestre.Mes1)
                {
                    prod.MetaPlanejada = trimestre.Mes1Vlr.HasValue ? trimestre.Mes1Vlr.Value : 0;
                    prod.QtdePlanejada = trimestre.Mes1Qtde.HasValue ? trimestre.Mes1Qtde.Value : 0;
                }
                else if (prod.Mes == trimestre.Mes2)
                {
                    prod.MetaPlanejada = trimestre.Mes2Vlr.HasValue ? trimestre.Mes2Vlr.Value : 0;
                    prod.QtdePlanejada = trimestre.Mes2Qtde.HasValue ? trimestre.Mes2Qtde.Value : 0;
                }
                else if (prod.Mes == trimestre.Mes3)
                {
                    prod.MetaPlanejada = trimestre.Mes3Vlr.HasValue ? trimestre.Mes3Vlr.Value : 0;
                    prod.QtdePlanejada = trimestre.Mes3Qtde.HasValue ? trimestre.Mes3Qtde.Value : 0;
                }

                RepositoryService.MetaDetalhadadoKAporProduto.Update(prod);
                vlr  += prod.MetaPlanejada.Value;
                qtde += (int)prod.QtdePlanejada;
                #endregion
            }

            valor      = vlr;
            quantidade = qtde;
        }
Exemplo n.º 4
0
        public List <PotencialdoKAporProduto> ListarValoresPorUnidadeNegocio(Guid unidadeNegocioId, int ano, Domain.Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes mes)
        {
            var lista = new List <PotencialdoKAporProduto>();

            string fetch = @"<fetch aggregate='true' no-lock='true' returntotalrecordcount='true' >
                              <entity name='itbc_metadetalhadadokaporproduto' >
                                <attribute name='itbc_metaplanejada' alias='valor_planejado' aggregate='sum' />
                                <attribute name='itbc_qtdeplanejada' alias='quantidade_planejada' aggregate='sum' />
                                <attribute name='itbc_metarealizada' alias='valor_realizado' aggregate='sum' />
                                <attribute name='itbc_qtderealizada' alias='quantidade_realizado' aggregate='sum' />
                                <filter type='and' >
                                    <condition attribute='itbc_mes' operator='eq' value='{2}' />
                                </filter>
                                <link-entity name='itbc_metadokaporproduto' from='itbc_metadokaporprodutoid' to='itbc_metadokaporprodutoid' link-type='inner' alias='prod' >
                                  <attribute name='itbc_metadokaporprodutoid' alias='id' groupby='true' />
                                  <filter type='and' >
                                    <condition attribute='itbc_ano' operator='eq' value='{0}' />
                                    <condition attribute='itbc_unidade_negociosid' operator='eq' value='{1}' />
                                  </filter>
                                </link-entity>
                              </entity>
                            </fetch>";

            fetch = string.Format(fetch, ano, unidadeNegocioId, mes);

            var retrieveMultiple = new RetrieveMultipleRequest()
            {
                Query = new FetchExpression(fetch)
            };

            EntityCollection collection = ((RetrieveMultipleResponse)this.Execute(retrieveMultiple)).EntityCollection;

            foreach (var item in collection.Entities)
            {
                var potencialProduto = new PotencialdoKAporProduto(OrganizationName, IsOffline, Provider)
                {
                    ID = (Guid)((AliasedValue)(item.Attributes["id"])).Value,
                    PotencialPlanejado = ((Money)((AliasedValue)item.Attributes["valor_planejado"]).Value).Value,
                    PotencialRealizado = ((Money)((AliasedValue)item.Attributes["valor_realizado"]).Value).Value,
                    QtdePlanejada      = (decimal)((AliasedValue)(item.Attributes["quantidade_planejada"])).Value,
                    QtdeRealizada      = (decimal)((AliasedValue)(item.Attributes["quantidade_realizado"])).Value
                };

                lista.Add(potencialProduto);
            }

            return(lista);
        }