private void BuscarCFGVend() { if (!string.IsNullOrEmpty(CD_CompVend.Text)) { cbTodos.Enabled = true; //Buscar CFG. Empresa lempresavend = CamadaNegocio.Faturamento.Cadastros.TCN_Vendedor_X_Empresa.Buscar(CD_CompVend.Text, string.Empty, null); cbCfgEmpresaVend.Enabled = lempresavend.Count > decimal.Zero; //Buscar CFG. Condição Pagamento lcondpagtovend = CamadaNegocio.Faturamento.Cadastros.TCN_Vendedor_X_CondPgto.Buscar(CD_CompVend.Text, string.Empty, null); cbCfgCondPagtoVend.Enabled = lcondpagtovend.Count > decimal.Zero; //Buscar CFG. Tabela Preço ltabprecovend = CamadaNegocio.Faturamento.Cadastros.TCN_Vendedor_X_TabelaPreco.Buscar(CD_CompVend.Text, string.Empty, null); cbCfgTabPrecoVend.Enabled = ltabprecovend.Count > decimal.Zero; //Buscar CFG.Carteira lcarteiravend = CamadaNegocio.Faturamento.Cadastros.TCN_Vendedor_X_RegiaoVenda.Buscar(CD_CompVend.Text, string.Empty, null); cbCfgCarteiraVend.Enabled = lcarteiravend.Count > decimal.Zero; //Buscar CFG. Grupo Produto lgrupoprodvend = CamadaNegocio.Faturamento.Cadastros.TCN_Vendedor_X_GrupoProd.Buscar(CD_CompVend.Text, string.Empty, null); cbCfgGrupoProdVend.Enabled = lgrupoprodvend.Count > decimal.Zero; //Buscar CFG. Desconto ldescontovend = CamadaNegocio.Faturamento.Cadastros.TCN_DescontoVendedor.Buscar(CD_CompVend.Text, string.Empty, string.Empty, string.Empty, null); cbCfgDescontoVend.Enabled = ldescontovend.Count > decimal.Zero; } }
private void bsVendedor_PositionChanged(object sender, EventArgs e) { if (bsMetasVendas.Current != null) { //Buscar Totais Vendas por Mês //Buscar Itens Vendas (bsMetasVendas.Current as TRegistro_Metas_VendasVendedor).lItemVenda = new CamadaDados.Faturamento.PDV.TCD_VendaRapida_Item().Select( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + cbEmpresa.SelectedValue.ToString() + "'" }, new Utils.TpBusca() { vNM_Campo = "a.cd_vendedor", vOperador = "=", vVL_Busca = "'" + (bsMetasVendas.Current as TRegistro_Metas_VendasVendedor).Cd_vendedor.Trim() + "'" }, new Utils.TpBusca() { vNM_Campo = "isnull(vr.st_registro, 'A')", vOperador = "<>", vVL_Busca = "'C'" }, new Utils.TpBusca() { vNM_Campo = "convert(datetime, floor(convert(decimal(30,10), vr.dt_emissao)))", vOperador = ">=", vVL_Busca = "'" + Convert.ToDateTime(new DateTime(int.Parse(cbxAno.Text), int.Parse((cbxMesMeta.SelectedIndex + 1).ToString()), 1)).ToString("dd/MM/yyyy") + "'" }, new Utils.TpBusca() { vNM_Campo = "convert(datetime, floor(convert(decimal(30,10), vr.dt_emissao)))", vOperador = "<=", vVL_Busca = "'" + Convert.ToDateTime(new DateTime(int.Parse(cbxAno.Text), int.Parse((cbxMesMeta.SelectedIndex + 1).ToString()), DateTime.DaysInMonth(int.Parse(cbxAno.Text), int.Parse((cbxMesMeta.SelectedIndex + 1).ToString())), 23, 59, 59)).ToString("dd/MM/yyyy") + "'" } }, 0, string.Empty, string.Empty); //Buscar metas (bsMetasVendas.Current as TRegistro_Metas_VendasVendedor).lMeta = CamadaNegocio.Faturamento.Cadastros.TCN_MetaVendedor.Buscar((bsMetasVendas.Current as TRegistro_Metas_VendasVendedor).Cd_vendedor, cbEmpresa.SelectedValue.ToString(), (cbxMesMeta.SelectedIndex + 1).ToString(), cbxAno.Text, null); //Formar Composicao da Comissão por Produto TList_ComposicaoComissao ListaComp = new TList_ComposicaoComissao(); (bsMetasVendas.Current as CamadaDados.Faturamento.Comissao.TRegistro_Metas_VendasVendedor).lComposicao.Clear(); (bsMetasVendas.Current as CamadaDados.Faturamento.Comissao.TRegistro_Metas_VendasVendedor).lItemVenda.FindAll(p => p.Pc_comissao > decimal.Zero).GroupBy(p => p.Cd_produto, (aux, venda) => new CamadaDados.Faturamento.Comissao.TRegistro_ComposicaoComissao() { Cd_produto = aux, Ds_produto = venda.ToList().Find(x => x.Cd_produto.Equals(aux)).Ds_produto, Quantidade = (bsMetasVendas.Current as CamadaDados.Faturamento.Comissao.TRegistro_Metas_VendasVendedor).lItemVenda.Where(x => x.Cd_produto.Equals(aux)).Count(), Tot_venda = (bsMetasVendas.Current as CamadaDados.Faturamento.Comissao.TRegistro_Metas_VendasVendedor).lItemVenda.FindAll(x => x.Cd_produto.Equals(aux)).Sum(x => x.Vl_subtotalliquido - (x.Qtd_devolvida * (x.Vl_subtotalliquido / x.Quantidade))), Pc_comissao = venda.ToList().Find(x => x.Cd_produto.Equals(aux)).Pc_comissao, Total_comissao = Math.Round((bsMetasVendas.Current as CamadaDados.Faturamento.Comissao.TRegistro_Metas_VendasVendedor).lItemVenda.FindAll(x => x.Cd_produto.Equals(aux)).Sum(x => x.Vl_subtotalliquido - (x.Qtd_devolvida * (x.Vl_subtotalliquido / x.Quantidade))) * venda.ToList().Find(x => x.Cd_produto.Equals(aux)).Pc_comissao / 100, 2) }).ToList().ForEach(p => ListaComp.Add(p)); //Buscar Composicao da Comissão por Grupo Produto CamadaDados.Faturamento.Cadastros.TList_Vendedor_X_GrupoProd lGrupo = CamadaNegocio.Faturamento.Cadastros.TCN_Vendedor_X_GrupoProd.Buscar((bsMetasVendas.Current as CamadaDados.Faturamento.Comissao.TRegistro_Metas_VendasVendedor).Cd_vendedor, string.Empty, null); if (lGrupo.Count > decimal.Zero) { lGrupo.ForEach(y => { (bsMetasVendas.Current as CamadaDados.Faturamento.Comissao.TRegistro_Metas_VendasVendedor).lItemVenda.Where(p => p.Pc_comissao.Equals(decimal.Zero) && p.Cd_grupo.Equals(y.Cd_grupo) ).GroupBy(p => p.Cd_grupo, (aux, venda) => new CamadaDados.Faturamento.Comissao.TRegistro_ComposicaoComissao() { Cd_grupo = aux, Ds_grupo = venda.ToList().Find(x => x.Cd_grupo.Equals(aux)).Ds_grupo, Quantidade = (bsMetasVendas.Current as CamadaDados.Faturamento.Comissao.TRegistro_Metas_VendasVendedor).lItemVenda.Where(x => x.Cd_grupo.Equals(aux) && x.Pc_comissao.Equals(decimal.Zero)).Count(), Tot_venda = (bsMetasVendas.Current as CamadaDados.Faturamento.Comissao.TRegistro_Metas_VendasVendedor).lItemVenda.FindAll(x => x.Cd_grupo.Equals(aux) && x.Pc_comissao.Equals(decimal.Zero)).Sum(x => x.Vl_subtotalliquido - (x.Qtd_devolvida * (x.Vl_subtotalliquido / x.Quantidade))), Pc_comissao = y.Pc_Comissao, Total_comissao = Math.Round((bsMetasVendas.Current as CamadaDados.Faturamento.Comissao.TRegistro_Metas_VendasVendedor).lItemVenda.FindAll(x => x.Cd_grupo.Equals(aux) && x.Pc_comissao.Equals(decimal.Zero)).Sum(x => x.Vl_subtotalliquido - (x.Qtd_devolvida * (x.Vl_subtotalliquido / x.Quantidade))) * y.Pc_Comissao / 100, 2) }).ToList().ForEach(p => ListaComp.Add(p)); }); } //Formar Composição Comissão por Metas (bsMetasVendas.Current as CamadaDados.Faturamento.Comissao.TRegistro_Metas_VendasVendedor).lItemVenda.Where(p => p.Pc_comissao.Equals(decimal.Zero) && !lGrupo.Exists(x => p.Cd_grupo.Equals(x.Cd_grupo)) ).GroupBy(p => p.Cd_empresa, (aux, venda) => new CamadaDados.Faturamento.Comissao.TRegistro_ComposicaoComissao() { Quantidade = (bsMetasVendas.Current as CamadaDados.Faturamento.Comissao.TRegistro_Metas_VendasVendedor).lItemVenda.Where(x => x.Pc_comissao.Equals(decimal.Zero) && !lGrupo.Exists(k => x.Cd_grupo.Equals(k.Cd_grupo))).Count(), Tot_venda = (bsMetasVendas.Current as CamadaDados.Faturamento.Comissao.TRegistro_Metas_VendasVendedor).lItemVenda.FindAll(x => x.Pc_comissao.Equals(decimal.Zero) && !lGrupo.Exists(k => x.Cd_grupo.Equals(k.Cd_grupo))).Sum(x => x.Vl_subtotalliquido - (x.Qtd_devolvida * (x.Vl_subtotalliquido / x.Quantidade))), Pc_comissao = (bsMetasVendas.Current as CamadaDados.Faturamento.Comissao.TRegistro_Metas_VendasVendedor).Pc_comissao, Total_comissao = Math.Round((bsMetasVendas.Current as CamadaDados.Faturamento.Comissao.TRegistro_Metas_VendasVendedor).lItemVenda.FindAll(x => x.Pc_comissao.Equals(decimal.Zero) && !lGrupo.Exists(k => x.Cd_grupo.Equals(k.Cd_grupo))).Sum(x => x.Vl_subtotalliquido - (x.Qtd_devolvida * (x.Vl_subtotalliquido / x.Quantidade))) * (bsMetasVendas.Current as CamadaDados.Faturamento.Comissao.TRegistro_Metas_VendasVendedor).Pc_comissao / 100, 5) }).ToList().ForEach(p => ListaComp.Add(p)); //Agrupar TList_ComposicaoComissao lista = new TList_ComposicaoComissao(); ListaComp.ForEach(p => { if (lista.Count.Equals(0) || !lista.Exists(x => x.Ds_grupo.Equals(p.Tipo_comissao))) { if (p.Tipo_comissao != "META VENDEDOR") { TRegistro_ComposicaoComissao r = new TRegistro_ComposicaoComissao(); r.Ds_grupo = p.Tipo_comissao; lista.Add(r); } } p.Ds_grupo = !string.IsNullOrEmpty(p.Ds_grupo) ? p.Ds_grupo.Trim() : !string.IsNullOrEmpty(p.Ds_produto) ? p.Ds_produto.Trim() : p.Tipo_comissao; lista.Add(p); if (p.Tipo_comissao != "META VENDEDOR") { lista.FindLast(x => string.IsNullOrEmpty(x.Cd_grupo) && string.IsNullOrEmpty(x.Cd_produto)).Quantidade += p.Quantidade; lista.FindLast(x => string.IsNullOrEmpty(x.Cd_grupo) && string.IsNullOrEmpty(x.Cd_produto)).Total_comissao += p.Total_comissao; lista.FindLast(x => string.IsNullOrEmpty(x.Cd_grupo) && string.IsNullOrEmpty(x.Cd_produto)).Tot_venda += p.Tot_venda; } }); lista.ForEach(p => (bsMetasVendas.Current as CamadaDados.Faturamento.Comissao.TRegistro_Metas_VendasVendedor).lComposicao.Add(p)); //Totalizar tot_comissaocalc.Text = ListaComp.Sum(p => p.Total_comissao).ToString("N2", new System.Globalization.CultureInfo("pt-BR")); bsMetasVendas.ResetCurrentItem(); } }