private void CalcularValorProdConvenio() { if ((bsConvenio.Current != null) && (lVenda.Count > 0)) { decimal vl_liquido = decimal.Zero; decimal vl_bruto = decimal.Zero; decimal volume = decimal.Zero; lVenda.GroupBy(p => p.Cd_produto, (aux, venda) => new { produto = aux, volume = venda.Sum(v => v.Volumeabastecido), vl_unitario = venda.Average(v => v.Vl_unitario), vl_subtotal = venda.Sum(v => v.Vl_subtotal) }).ToList().ForEach(p => { //Buscar convenio x clifor x produto //Verificar se o produto tem convenio valor unitario CamadaDados.PostoCombustivel.TList_Convenio_Clifor lConvClifor = new CamadaDados.PostoCombustivel.TCD_Convenio_Clifor().Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + lVenda[0].Cd_empresa.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.id_convenio", vOperador = "=", vVL_Busca = (bsConvenio.Current as CamadaDados.PostoCombustivel.TRegistro_Convenio).Id_conveniostr }, new TpBusca() { vNM_Campo = "a.cd_clifor", vOperador = "=", vVL_Busca = "'" + cd_clifor.Text.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.cd_endereco", vOperador = "=", vVL_Busca = "'" + cd_endereco.Text.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.cd_produto", vOperador = "=", vVL_Busca = "'" + p.produto.Trim() + "'" } }, 1, string.Empty); if (lConvClifor[0].Vl_unitario > decimal.Zero) { vl_liquido += p.volume * lConvClifor[0].Vl_unitario; } else { string tp_acresdesc = !string.IsNullOrWhiteSpace(lConvClifor[0].Tp_acresdesc) ? lConvClifor[0].Tp_acresdesc : (bsConvenio.Current as CamadaDados.PostoCombustivel.TRegistro_Convenio).Tp_acresdesc; string tp_desconto = !string.IsNullOrWhiteSpace(lConvClifor[0].Tp_desconto) ? lConvClifor[0].Tp_desconto : (bsConvenio.Current as CamadaDados.PostoCombustivel.TRegistro_Convenio).Tp_desconto; decimal vl_desc = lConvClifor[0].Desconto > decimal.Zero ? lConvClifor[0].Desconto : (bsConvenio.Current as CamadaDados.PostoCombustivel.TRegistro_Convenio).Desconto; if (lConvClifor[0].Tp_preco.Trim().ToUpper() != "N") { if (lConvClifor[0].Tp_preco.Trim().ToUpper().Equals("A")) { //Buscar Preço ANP do combustivel decimal vl_precoANP = CamadaNegocio.PostoCombustivel.Cadastros.TCN_PrecoANP.BuscarPrecoANP(p.produto, null); if (vl_precoANP > decimal.Zero) { //Verificar se o convenio tem desconto/acrescimo valor unitario if (vl_desc > decimal.Zero) { if (tp_acresdesc.Trim().ToUpper().Equals("A")) { vl_liquido += tp_desconto.Trim().ToUpper().Equals("V") ? (p.volume * vl_precoANP) + (vl_desc * p.volume) : (p.volume * vl_precoANP) + Math.Round((p.volume * vl_precoANP) * (vl_desc / 100), 2); } else { vl_liquido += tp_desconto.Trim().ToUpper().Equals("V") ? (p.volume * vl_precoANP) - (vl_desc * p.volume) : (p.volume * vl_precoANP) - Math.Round((p.volume * vl_precoANP) * (vl_desc / 100), 2); } } else { vl_liquido += p.volume * vl_precoANP; } } } else if (lConvClifor[0].Tp_preco.Trim().ToUpper().Equals("C")) { //Buscar preco Custo decimal vl_precoCusto = CamadaNegocio.Estoque.TCN_LanEstoque.Valor_Medio_Est_Produto(lVenda[0].Cd_empresa, p.produto, null); if (vl_precoCusto > decimal.Zero) { //Verificar se o convenio tem desconto/acrescimo valor unitario if (vl_desc > decimal.Zero) { if (tp_acresdesc.Trim().ToUpper().Equals("A")) { vl_liquido += tp_desconto.Trim().ToUpper().Equals("V") ? (p.volume * vl_precoCusto) + (vl_desc * p.volume) : (p.volume * vl_precoCusto) + Math.Round((p.volume * vl_precoCusto) * (vl_desc / 100), 2); } else { vl_liquido += tp_desconto.Trim().ToUpper().Equals("V") ? (p.volume * vl_precoCusto) - (vl_desc * p.volume) : (p.volume * vl_precoCusto) - Math.Round((p.volume * vl_precoCusto) * (vl_desc / 100), 2); } } else { vl_liquido += p.volume * vl_precoCusto; } } } else { //Verificar se o convenio tem desconto/acrescimo valor unitario if (vl_desc > decimal.Zero) { if (tp_acresdesc.Trim().ToUpper().Equals("A")) { vl_liquido += tp_desconto.Trim().ToUpper().Equals("V") ? p.vl_subtotal + (vl_desc * p.volume) : p.vl_subtotal + Math.Round(p.vl_subtotal * (vl_desc / 100), 2); } else { vl_liquido += tp_desconto.Trim().ToUpper().Equals("V") ? p.vl_subtotal - (vl_desc * p.volume) : p.vl_subtotal - Math.Round(p.vl_subtotal * (vl_desc / 100), 2); } } else { vl_liquido += p.vl_subtotal; } } } else { //Verificar se o convenio tem desconto/acrescimo valor unitario if (vl_desc > decimal.Zero) { if (tp_acresdesc.Trim().ToUpper().Equals("A")) { vl_liquido += tp_desconto.Trim().ToUpper().Equals("V") ? p.vl_subtotal + (vl_desc * p.volume) : p.vl_subtotal + Math.Round(p.vl_subtotal * (vl_desc / 100), 2); } else { vl_liquido += tp_desconto.Trim().ToUpper().Equals("V") ? p.vl_subtotal - (vl_desc * p.volume) : p.vl_subtotal - Math.Round(p.vl_subtotal * (vl_desc / 100), 2); } } else { vl_liquido += p.vl_subtotal; } } } vl_bruto += p.vl_subtotal; volume += p.volume; }); tot_volume.Value = volume; tot_bruto.Value = vl_bruto; tot_liquido.Value = vl_liquido; total_receber.Value = tot_liquido.Value + tot_outrasvenda.Value; } }
private void bb_imprimir_Click(object sender, EventArgs e) { if (bsValeResgate.Current != null) { if ((bsValeResgate.Current as CamadaDados.Faturamento.Fidelizacao.TRegistro_ValeResgate).St_impressobool) { MessageBox.Show("Não é permitido reimprimir vale.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } try { //Imprimir Vale List <string> Texto = new List <string>(); Texto.Add(" RESGATE PONTOS "); Texto.Add("PLACA: " + (bsValeResgate.Current as CamadaDados.Faturamento.Fidelizacao.TRegistro_ValeResgate).Placa + " VALE: " + (bsValeResgate.Current as CamadaDados.Faturamento.Fidelizacao.TRegistro_ValeResgate).Id_valestr); Texto.Add("DATA EMISSAO: " + CamadaDados.UtilData.Data_Servidor().ToString("dd/MM/yyyy HH:mm:ss")); //Buscar Convenio e clifor CamadaDados.PostoCombustivel.TList_VendaCombustivel lVenda = new CamadaDados.PostoCombustivel.TCD_VendaCombustivel().Select( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from VTB_FAT_PONTOSFIDELIDADE x " + "inner join TB_FAT_ResgatePontos y " + "on x.CD_Empresa = y.CD_Empresa " + "and x.ID_Ponto = y.ID_Ponto " + "where x.cd_empresa = a.CD_Empresa " + "and x.Id_Cupom = a.Id_Cupom " + "and y.ID_Vale = " + (bsValeResgate.Current as CamadaDados.Faturamento.Fidelizacao.TRegistro_ValeResgate).Id_valestr + ")" } }, 1, string.Empty, string.Empty); //Buscar Nº Dias Validade if (rCfgPosto.diasValidadeVale > decimal.Zero) { Texto.Add("DT.VALIDADE: " + CamadaDados.UtilData.Data_Servidor().AddDays(int.Parse(rCfgPosto.diasValidadeVale.ToString())).ToString("dd/MM/yyyy")); } Texto.Add(string.Empty); Texto.Add(string.Empty); //Verificar se existe msg especifica para clifor do convenio //Buscar msg if (!string.IsNullOrEmpty(lVenda[0].Nm_clifor)) { Texto.Add(lVenda[0].Nm_clifor); Texto.Add(string.Empty); Texto.Add(string.Empty); } string Ds_msgVale_Clifor = new CamadaDados.PostoCombustivel.TCD_Convenio_Clifor().BuscarEscalar( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.cd_clifor", vOperador = "=", vVL_Busca = "'" + lVenda[0].Cd_clifor.Trim() + "'" }, new Utils.TpBusca() { vNM_Campo = "a.id_convenio", vOperador = "=", vVL_Busca = lVenda[0].Id_conveniostr } }, "a.ds_msgvale").ToString(); if (string.IsNullOrEmpty(Ds_msgVale_Clifor)) { Texto.Add(rCfgPosto.Ds_msgvale.Trim().ToUpper()); } else { Texto.Add(Ds_msgVale_Clifor); } Texto.Add(string.Empty); Texto.Add(string.Empty); object obj = new CamadaDados.Faturamento.Fidelizacao.TCD_PontosFidelidade().BuscarEscalar( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + rCfgPosto.Cd_empresa.Trim() + "'" }, new Utils.TpBusca() { vNM_Campo = string.Empty, vOperador = string.Empty, vVL_Busca = "a.dt_validade is null or convert(datetime, floor(convert(decimal(30,10), a.dt_validade))) >= convert(datetime, floor(convert(decimal(30,10), getdate())))" }, new Utils.TpBusca() { vNM_Campo = "replace(a.placa, '-', '')", vOperador = "=", vVL_Busca = "'" + placa.Text.Replace("-", string.Empty) + "'" } }, "isnull(sum(isnull(a.qt_pontos, 0) - isnull(a.pontos_res, 0)), 0)"); Texto.Add("PONTOS RESGATAR: " + (obj == null ? "0" : obj.ToString())); ImprimirVale(Texto); //Marcar vale como impresso try { (bsValeResgate.Current as CamadaDados.Faturamento.Fidelizacao.TRegistro_ValeResgate).St_impresso = "S"; CamadaNegocio.Faturamento.Fidelizacao.TCN_ValeResgate.Gravar(bsValeResgate.Current as CamadaDados.Faturamento.Fidelizacao.TRegistro_ValeResgate, null); afterBusca(); } catch (Exception ex) { MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch { } } }
private void bb_resgatar_Click(object sender, EventArgs e) { if (lPontos.Sum(p => p.SD_Pontos) < rCfgPosto.Qt_pontosvale_fid) { MessageBox.Show("Saldo de pontos insuficiente para emitir VALE<Pontos necessários por vale: " + rCfgPosto.Qt_pontosvale_fid.ToString() + ">.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } string loginautoriza = string.Empty; if (rCfgPosto.Qt_maxvaledia > decimal.Zero) { if (rCfgPosto.Qt_maxvaledia <= vales_impressos.Value) { using (Parametros.Diversos.TFRegraUsuario fRegra = new Parametros.Diversos.TFRegraUsuario()) { fRegra.Ds_regraespecial = "AUTORIZA EMISSÃO VALE PONTOS FIDELIZAÇÃO"; if (fRegra.ShowDialog() == DialogResult.OK) { loginautoriza = fRegra.Login; } else { return; } } } } CamadaDados.Faturamento.Fidelizacao.TRegistro_ValeResgate rVale = null; try { rVale = CamadaNegocio.PostoCombustivel.TCN_Convenio_Clifor.ResgatarPontosFid(lPontos, rCfgPosto.Qt_pontosvale_fid, LoginPDV, loginautoriza, null); lPontos.RemoveAll(p => p.SD_Pontos.Equals(decimal.Zero)); pontos_resgatar.Value = lPontos.Sum(p => p.SD_Pontos); BuscarValesDia(); } catch (Exception ex) { MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } try { //Imprimir Vale List <string> Texto = new List <string>(); Texto.Add(" RESGATE PONTOS "); Texto.Add("VALE Nr.: " + rVale.Id_valestr); if (!string.IsNullOrWhiteSpace(pPlaca.Replace("-", string.Empty))) { Texto.Add("PLACA: " + pPlaca.Trim() + " VALE: " + rVale.Id_valestr); } else { Texto.Add("CLIENTE: " + pCd_clifor.Trim() + "-" + pNm_clifor.Trim()); } Texto.Add("DATA EMISSAO: " + CamadaDados.UtilData.Data_Servidor().ToString("dd/MM/yyyy HH:mm:ss")); //Buscar Nº Dias Validade if (rCfgPosto.diasValidadeVale > decimal.Zero) { Texto.Add("DT.VALIDADE: " + CamadaDados.UtilData.Data_Servidor().AddDays(int.Parse(rCfgPosto.diasValidadeVale.ToString())).ToString("dd/MM/yyyy")); } Texto.Add(string.Empty); Texto.Add(string.Empty); Texto.Add(string.Empty); //Verificar se existe msg especifica para clifor do convenio string Ds_msgVale_Clifor = string.Empty; if (!string.IsNullOrEmpty(pId_Convenio)) { object obj = new CamadaDados.PostoCombustivel.TCD_Convenio_Clifor().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = string.Empty, vVL_Busca = "a.cd_clifor = '" + pCd_clifor.Trim() + "' or exists(select 1 from TB_PDC_Convenio_X_Placa x " + "where a.id_convenio = x.id_convenio " + "and a.cd_empresa = x.cd_empresa " + "and a.cd_clifor = x.cd_clifor " + "and a.cd_endereco = x.cd_endereco " + "and a.cd_produto = x.cd_produto " + "and x.placa = '" + pPlaca.Trim() + "')" }, new TpBusca() { vNM_Campo = "a.id_convenio", vOperador = "=", vVL_Busca = pId_Convenio } }, "a.ds_msgvale"); Ds_msgVale_Clifor = obj == null ? string.Empty : obj.ToString(); } else { object obj = new CamadaDados.PostoCombustivel.TCD_Convenio_Clifor().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + rCfgPosto.Cd_empresa.Trim() + "'" }, new TpBusca() { vNM_Campo = string.Empty, vOperador = string.Empty, vVL_Busca = "a.cd_clifor = '" + pCd_clifor.Trim() + "' or exists(select 1 from TB_PDC_Convenio_X_Placa x " + "where a.id_convenio = x.id_convenio " + "and a.cd_empresa = x.cd_empresa " + "and a.cd_clifor = x.cd_clifor " + "and a.cd_endereco = x.cd_endereco " + "and a.cd_produto = x.cd_produto " + "and x.placa = '" + pPlaca.Trim() + "')" }, new TpBusca() { vNM_Campo = "isnull(a.ds_msgvale, '')", vOperador = "<>", vVL_Busca = "''" } }, "a.ds_msgvale"); Ds_msgVale_Clifor = obj == null ? string.Empty : obj.ToString(); } if (string.IsNullOrEmpty(Ds_msgVale_Clifor)) { Texto.Add(rCfgPosto.Ds_msgvale.Trim().ToUpper()); } else { Texto.Add(Ds_msgVale_Clifor); } Texto.Add(string.Empty); Texto.Add(string.Empty); Texto.Add("PONTOS RESGATAR: " + lPontos.Sum(p => p.SD_Pontos).ToString()); ImprimirVale(Texto); //Marcar vale como impresso try { rVale.St_impresso = "S"; CamadaNegocio.Faturamento.Fidelizacao.TCN_ValeResgate.Gravar(rVale, null); } catch (Exception ex) { MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch { } }