public static void RecalcDiaVencto(TList_PreVenda_DT_Vencto val, decimal Qtd_desdobro, int index) { for (int i = (index + 1); i < val.Count; i++) { val[i].DiasVencto = val[i - 1].DiasVencto + Qtd_desdobro; } }
public static void RecalculaParc(TList_PreVenda_DT_Vencto lParc, TRegistro_PreVenda val, int index) { if (lParc != null) { if (lParc.Sum(p => p.Vl_parcela) != (val.Vl_prevenda - val.Vl_devcred)) { decimal vl_parc = val.Vl_prevenda - val.Vl_devcred - lParc.Sum(p => p.Vl_parcela); decimal nParcelas = (lParc.Count - (index + 1)); if (nParcelas.Equals(0)) { nParcelas = 1; } vl_parc = (vl_parc / nParcelas); for (int i = ++index; i < lParc.Count; i++) { lParc[i].Vl_parcela += vl_parc; } lParc[lParc.Count - 1].Vl_parcela += val.Vl_prevenda - val.Vl_devcred - lParc.Sum(p => p.Vl_parcela); //Recalcular Parcelas se valor informado for maior que valor a faturar decimal somaParcAnt = SomaParcelasAnt(lParc, index); if ((somaParcAnt) > val.Vl_prevenda - val.Vl_devcred) { lParc[index - 1].Vl_parcela = (val.Vl_prevenda - val.Vl_devcred - (somaParcAnt - lParc[index - 1].Vl_parcela) - nParcelas); for (int i = index; i < lParc.Count; i++) { lParc[i].Vl_parcela = 1; } } } } }
public static TList_PreVenda_DT_Vencto ReCalcula_VlParcela(TRegistro_PreVenda val, bool St_calcular) { //Recalcular vl.parcela quando for faturar prevenda com duplicata TList_PreVenda_DT_Vencto retorno = new TList_PreVenda_DT_Vencto(); if (((val.Vl_prevenda - val.Vl_devcred) > 0) && (!string.IsNullOrEmpty(val.Cd_condPgto)) && (val.QTD_Parcelas > 0) && (St_calcular)) { decimal vl_parcela = Math.Round((val.Vl_prevenda - val.Vl_devcred) / val.QTD_Parcelas, 2); int cont = 1; val.DT_Vencto.ForEach(p => { retorno.Add(new CamadaDados.Faturamento.PDV.TRegistro_PreVenda_DT_Vencto() { DiasVencto = p.DiasVencto, Vl_parcela = vl_parcela, id_parcela = cont++ }); }); if (retorno.Count > 0) { retorno[retorno.Count - 1].Vl_parcela += val.Vl_prevenda - val.Vl_devcred - retorno.Sum(p => p.Vl_parcela); } } return(retorno); }
public static TList_PreVenda_DT_Vencto Calcula_Parcelas(TRegistro_PreVenda val, bool St_calcular) { TList_PreVenda_DT_Vencto retorno = new TList_PreVenda_DT_Vencto(); if (((val.Vl_prevenda - val.Vl_devcred) > 0) && (!string.IsNullOrEmpty(val.Cd_condPgto)) && (val.QTD_Parcelas > 0) && (St_calcular)) { TList_Parcelas Lista_Parcela = TLanCalcParcelas.CalcularParcelas(val.Vl_prevenda - val.Vl_devcred, val.Vl_prevenda - val.Vl_devcred, val.Dt_emissao.Value, val.QTD_Parcelas, val.Parcelas_Dias_Desdobro); int cont = 1; Lista_Parcela.ForEach(p => { retorno.Add( new CamadaDados.Faturamento.PDV.TRegistro_PreVenda_DT_Vencto() { DiasVencto = p.Dt_vencimento.Value.Subtract(val.Dt_prevenda.Value).Days, Vl_parcela = p.Vl_parcela, id_parcela = cont++ }); }); } return(retorno); }
private static decimal SomaParcelasAnt(TList_PreVenda_DT_Vencto lParc, decimal index) { // Soma Parcelas Anteriores decimal somaParcelaAnt = 0; for (int i = 0; i < index; i++) { somaParcelaAnt += Convert.ToDecimal(string.Format("{0:F2}", lParc[i].Vl_parcela)); } return(somaParcelaAnt); }
private void ImprimirReduzido(TRegistro_PreVenda val, string porta, string Tp_impressora) { //Buscar dados da empresa CamadaDados.Diversos.TList_CadEmpresa lEmpresa = CamadaNegocio.Diversos.TCN_CadEmpresa.Busca(val.Cd_empresa, string.Empty, string.Empty, null); if (lEmpresa.Count < 1) { throw new Exception("Não foi possivel localizar empresa " + val.Cd_empresa); } if (!string.IsNullOrEmpty(Tp_impressora)) { PDV.TGerenciarImpNaoFiscal.IniciarPorta(porta); try { StringBuilder imp = new StringBuilder(); imp.AppendLine(" PRÉ-VENDA N: " + val.Id_prevendastr + " " + val.Dt_emissaostr); imp.AppendLine(" ========================================="); imp.AppendLine(" DADOS EMPRESA "); imp.AppendLine(" ========================================="); imp.AppendLine(" " + lEmpresa[0].Nm_empresa.Trim().ToUpper()); imp.AppendLine(" " + lEmpresa[0].Ds_endereco.Trim().ToUpper() + "," + lEmpresa[0].rEndereco.Numero); imp.AppendLine(" " + lEmpresa[0].rEndereco.Bairro.Trim().ToUpper()); imp.AppendLine(" -----------------------------------------"); imp.AppendLine(" DADOS CLIENTE "); imp.AppendLine(" -----------------------------------------"); imp.AppendLine(" " + val.Cd_clifor.Trim() + "-" + val.Nm_clifor.Trim().ToUpper()); //Buscar clifor config object obj_clifor = new CamadaDados.Faturamento.Cadastros.TCD_CFGCupomFiscal().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + val.Cd_empresa.Trim() + "'" } }, "a.cd_clifor"); if ((obj_clifor == null ? false : obj_clifor.ToString() != val.Cd_clifor) && (!string.IsNullOrEmpty(val.Cd_clifor))) { //Buscar dados cliente CamadaDados.Financeiro.Cadastros.TRegistro_CadClifor rCliente = CamadaNegocio.Financeiro.Cadastros.TCN_CadClifor.Busca_Clifor_Codigo(val.Cd_clifor, null); if (!string.IsNullOrEmpty(rCliente.Nm_fantasia)) { imp.Append(" " + rCliente.Nm_fantasia.Trim().ToUpper()); } if (rCfg.St_impcpfcnpjbool) { if ((!string.IsNullOrEmpty(rCliente.Nr_cgc.SoNumero())) || (!string.IsNullOrEmpty(rCliente.Nr_cpf.SoNumero()))) { imp.AppendLine(" CNPJ/CPF: " + (!string.IsNullOrEmpty(rCliente.Nr_cgc.SoNumero()) ? rCliente.Nr_cgc : rCliente.Nr_cpf)); } } } imp.Append(" " + val.Ds_endereco.Trim().ToUpper()); if ((obj_clifor == null ? false : obj_clifor.ToString() != val.Cd_clifor) && (!string.IsNullOrEmpty(val.Cd_clifor))) { //Buscar Endereco do cliente CamadaDados.Financeiro.Cadastros.TList_CadEndereco lEndereco = new CamadaDados.Financeiro.Cadastros.TCD_CadEndereco().Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_clifor", vOperador = "=", vVL_Busca = "'" + val.Cd_clifor.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.cd_endereco", vOperador = "=", vVL_Busca = "'" + val.Cd_endereco.Trim() + "'" } }, 0, string.Empty); if (lEndereco.Count > 0) { if (!string.IsNullOrEmpty(lEndereco[0].Numero)) { imp.AppendLine(", " + lEndereco[0].Numero.Trim().ToUpper()); } if (!string.IsNullOrEmpty(lEndereco[0].Bairro)) { imp.AppendLine(" " + lEndereco[0].Bairro.Trim().ToUpper()); } if (!string.IsNullOrEmpty(lEndereco[0].DS_Cidade)) { imp.AppendLine(" " + lEndereco[0].DS_Cidade.Trim().ToUpper() + " - " + lEndereco[0].UF); } if (!string.IsNullOrEmpty(lEndereco[0].Fone.SoNumero())) { imp.AppendLine(" " + lEndereco[0].Fone.Trim().ToUpper() + (!string.IsNullOrEmpty(lEndereco[0].Celular.SoNumero()) ? "/" + lEndereco[0].Celular.Trim().ToUpper() : string.Empty)); } if (!string.IsNullOrEmpty(lEndereco[0].Cep.SoNumero())) { imp.AppendLine(" CEP: " + lEndereco[0].Cep); } if (!string.IsNullOrEmpty(lEndereco[0].Proximo)) { imp.AppendLine(" " + lEndereco[0].Proximo.Trim().ToUpper()); } } } else { imp.AppendLine(); imp.AppendLine(); } if (!string.IsNullOrEmpty(val.Nm_vendedor)) { imp.AppendLine((" VENDEDOR: " + val.Nm_vendedor.Trim()).FormatStringDireita(42, ' ')); } imp.AppendLine(" -----------------------------------------"); imp.AppendLine(" PRODUTO QTD VAL.UNIT SUBTOTAL"); imp.AppendLine(" -----------------------------------------"); val.lItens.ForEach(p => { imp.AppendLine(" " + (p.Cd_produto.Trim() + "-" + p.Ds_produto.Trim().ToUpper())); imp.Append(p.Quantidade.ToString("N3", new System.Globalization.CultureInfo("en-US", true)).FormatStringEsquerda(13, ' ') + "x"); imp.Append(p.Vl_unitario.ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringEsquerda(14, ' ')); imp.Append(p.Vl_subtotal.ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringEsquerda(10, ' ')); imp.AppendLine(); if (p.Vl_desconto > decimal.Zero) { imp.AppendLine(" DESCONTO: " + p.Vl_desconto.ToString("N2", new System.Globalization.CultureInfo("en-US", true))); } if (p.Vl_acrescimo > decimal.Zero) { imp.AppendLine(" ACRESCIMO: " + p.Vl_acrescimo.ToString("N2", new System.Globalization.CultureInfo("en-US", true))); } if (p.Vl_juro_fin > decimal.Zero) { imp.AppendLine(" JURO FIN.: " + p.Vl_juro_fin.ToString("N2", new System.Globalization.CultureInfo("en-US", true))); } }); imp.Append(" -----------------------------------------------"); imp.Append(" ACRESCIMOS JUROS FIN. FRETE DESCONTO LIQUIDO"); imp.Append(val.lItens.Sum(p => p.Vl_acrescimo).ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringEsquerda(12, ' ')); imp.Append(val.lItens.Sum(p => p.Vl_juro_fin).ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringEsquerda(11, ' ')); imp.Append(val.lItens.Sum(p => p.Vl_frete).ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringEsquerda(7, ' ')); imp.Append(val.lItens.Sum(p => p.Vl_desconto).ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringEsquerda(9, ' ')); imp.AppendLine(val.lItens.Sum(p => p.Vl_liquido).ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringEsquerda(9, ' ')); imp.AppendLine(" -------------------------------------------"); if (!string.IsNullOrEmpty(val.Cd_portador)) { imp.AppendLine(" FORMA PGTO : " + val.Cd_portador.Trim() + "-" + val.Ds_portador.Trim()); } //Buscar Parcelas TList_PreVenda_DT_Vencto lParc = CamadaNegocio.Faturamento.PDV.TCN_PreVenda_DT_Vencto.Buscar(val.Id_prevendastr, val.Cd_empresa, null); if (lParc.Count > 0) { imp.AppendLine(" COND.PGTO : " + val.Cd_condPgto.Trim() + "-" + val.Ds_condPgto.Trim()); imp.AppendLine(" VENCIMENTO VALOR "); lParc.OrderBy(p => p.Dt_vencto).ToList().ForEach(p => imp.AppendLine(" " + p.Dt_vencto.ToString("dd/MM/yyyy").FormatStringDireita(20, ' ') + p.Vl_parcela.ToString("C2", new System.Globalization.CultureInfo("pt-BR")))); imp.AppendLine(); imp.AppendLine(); } imp.AppendLine(); imp.AppendLine(); imp.AppendLine(" -----------------------------------------"); imp.AppendLine(" Cliente "); imp.AppendLine(); imp.AppendLine(); //Imprimir observacao cupom if (!string.IsNullOrEmpty(val.Ds_observacao)) { string obs = val.Ds_observacao.Trim(); imp.AppendLine(" -----------------------------------------"); imp.AppendLine(" OBSERVAÇÕES "); imp.AppendLine(" -----------------------------------------"); while (true) { if (obs.Length <= 40) { imp.AppendLine(" " + obs); break; } else { imp.AppendLine(" " + obs.Substring(0, 40)); obs = obs.Remove(0, 40); } } } imp.AppendLine(" -----------------------------------------"); imp.AppendLine(" Este recibo nao tem valor Fiscal "); imp.AppendLine(); imp.AppendLine(); imp.AppendLine(); imp.AppendLine(); imp.AppendLine(); PDV.TGerenciarImpNaoFiscal.Texto(imp.ToString()); PDV.TGerenciarImpNaoFiscal.Guilhotina(); } catch (Exception ex) { MessageBox.Show("Erro: " + ex.Message.Trim()); } finally { PDV.TGerenciarImpNaoFiscal.FecharPorta(); } } else { System.IO.FileInfo f = null; System.IO.StreamWriter w = null; f = new System.IO.FileInfo(System.IO.Path.GetTempPath() + System.IO.Path.DirectorySeparatorChar + "Orcamento.txt"); w = f.CreateText(); try { w.WriteLine(" PRÉ-VENDA N: " + val.Id_prevendastr + " " + val.Dt_emissaostr); w.WriteLine(" ========================================="); w.WriteLine(" DADOS EMPRESA "); w.WriteLine(" ========================================="); w.WriteLine(" " + lEmpresa[0].Nm_empresa.Trim().ToUpper()); w.WriteLine(" " + lEmpresa[0].Ds_endereco.Trim().ToUpper() + "," + lEmpresa[0].rEndereco.Numero); w.WriteLine(" " + lEmpresa[0].rEndereco.Bairro.Trim().ToUpper()); w.WriteLine(" -----------------------------------------"); w.WriteLine(" DADOS CLIENTE "); w.WriteLine(" -----------------------------------------"); w.WriteLine(" " + val.Cd_clifor.Trim() + "-" + val.Nm_clifor.Trim().ToUpper()); object obj_clifor = new CamadaDados.Faturamento.Cadastros.TCD_CFGCupomFiscal().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + val.Cd_empresa.Trim() + "'" } }, "a.cd_clifor"); if ((obj_clifor == null ? false : obj_clifor.ToString() != val.Cd_clifor) && (!string.IsNullOrEmpty(val.Cd_clifor))) { //Buscar dados cliente CamadaDados.Financeiro.Cadastros.TRegistro_CadClifor rCliente = CamadaNegocio.Financeiro.Cadastros.TCN_CadClifor.Busca_Clifor_Codigo(val.Cd_clifor, null); if (!string.IsNullOrEmpty(rCliente.Nm_fantasia)) { w.WriteLine(" " + rCliente.Nm_fantasia.Trim().ToUpper()); } if (rCfg.St_impcpfcnpjbool) { if ((!string.IsNullOrEmpty(rCliente.Nr_cgc.SoNumero())) || (!string.IsNullOrEmpty(rCliente.Nr_cpf.SoNumero()))) { w.WriteLine(" CNPJ/CPF: " + (!string.IsNullOrEmpty(rCliente.Nr_cgc.SoNumero()) ? rCliente.Nr_cgc : rCliente.Nr_cpf)); } } } w.Write(" " + val.Ds_endereco.Trim().ToUpper()); if ((obj_clifor == null ? false : obj_clifor.ToString() != val.Cd_clifor) && (!string.IsNullOrEmpty(val.Cd_clifor))) { //Buscar Endereco do cliente CamadaDados.Financeiro.Cadastros.TList_CadEndereco lEndereco = new CamadaDados.Financeiro.Cadastros.TCD_CadEndereco().Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_clifor", vOperador = "=", vVL_Busca = "'" + val.Cd_clifor.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.cd_endereco", vOperador = "=", vVL_Busca = "'" + val.Cd_endereco.Trim() + "'" } }, 0, string.Empty); if (lEndereco.Count > 0) { if (!string.IsNullOrEmpty(lEndereco[0].Numero)) { w.WriteLine(", " + lEndereco[0].Numero.Trim().ToUpper()); } if (!string.IsNullOrEmpty(lEndereco[0].Bairro)) { w.WriteLine(" " + lEndereco[0].Bairro.Trim().ToUpper()); } if (!string.IsNullOrEmpty(lEndereco[0].DS_Cidade)) { w.WriteLine(" " + lEndereco[0].DS_Cidade.Trim().ToUpper() + " - " + lEndereco[0].UF); } if (!string.IsNullOrEmpty(lEndereco[0].Fone.SoNumero())) { w.WriteLine(" " + lEndereco[0].Fone.Trim().ToUpper() + (!string.IsNullOrEmpty(lEndereco[0].Celular.SoNumero()) ? "/" + lEndereco[0].Celular.Trim().ToUpper() : string.Empty)); } if (!string.IsNullOrEmpty(lEndereco[0].Cep.SoNumero())) { w.WriteLine(" CEP: " + lEndereco[0].Cep); } if (!string.IsNullOrEmpty(lEndereco[0].Proximo)) { w.WriteLine(" " + lEndereco[0].Proximo.Trim().ToUpper()); } } } else { w.WriteLine(); w.WriteLine(); } if (!string.IsNullOrEmpty(val.Nm_vendedor)) { w.WriteLine((" VENDEDOR: " + val.Nm_vendedor.Trim()).FormatStringDireita(42, ' ')); } w.WriteLine(" -----------------------------------------"); w.WriteLine(" PRODUTO QTD VAL.UNIT SUBTOTAL"); w.WriteLine(" -----------------------------------------"); val.lItens.ForEach(p => { w.WriteLine(" " + (p.Cd_produto.Trim() + "-" + p.Ds_produto.Trim().ToUpper())); w.Write(p.Quantidade.ToString("N3", new System.Globalization.CultureInfo("en-US", true)).FormatStringEsquerda(13, ' ') + "x"); w.Write(p.Vl_unitario.ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringEsquerda(14, ' ')); w.Write(p.Vl_subtotal.ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringEsquerda(10, ' ')); w.WriteLine(); if (p.Vl_desconto > decimal.Zero) { w.WriteLine(" DESCONTO: " + p.Vl_desconto.ToString("N2", new System.Globalization.CultureInfo("en-US", true))); } if (p.Vl_acrescimo > decimal.Zero) { w.WriteLine(" ACRESCIMO: " + p.Vl_acrescimo.ToString("N2", new System.Globalization.CultureInfo("en-US", true))); } if (p.Vl_juro_fin > decimal.Zero) { w.WriteLine(" JURO FIN.: " + p.Vl_juro_fin.ToString("N2", new System.Globalization.CultureInfo("en-US", true))); } }); w.WriteLine(" -----------------------------------------"); w.WriteLine(" ACRESCIMOS JUROS FIN. DESCONTO LIQUIDO "); w.Write(val.lItens.Sum(p => p.Vl_acrescimo).ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringEsquerda(12, ' ')); w.Write(val.lItens.Sum(p => p.Vl_juro_fin).ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringEsquerda(11, ' ')); w.Write(val.lItens.Sum(p => p.Vl_desconto).ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringEsquerda(9, ' ')); w.WriteLine(val.lItens.Sum(p => p.Vl_liquido).ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringEsquerda(9, ' ')); w.WriteLine(" -----------------------------------------"); if (!string.IsNullOrEmpty(val.Cd_portador)) { w.WriteLine(" FORMA PGTO : " + val.Cd_portador.Trim() + "-" + val.Ds_portador.Trim()); } //Buscar Parcelas TList_PreVenda_DT_Vencto lParc = CamadaNegocio.Faturamento.PDV.TCN_PreVenda_DT_Vencto.Buscar(val.Id_prevendastr, val.Cd_empresa, null); if (lParc.Count > 0) { w.WriteLine(" COND.PGTO : " + val.Cd_condPgto.Trim() + "-" + val.Ds_condPgto.Trim()); w.WriteLine(" VENCIMENTO VALOR "); lParc.OrderBy(p => p.Dt_vencto).ToList().ForEach(p => w.WriteLine(" " + p.Dt_vencto.ToString("dd/MM/yyyy").FormatStringDireita(20, ' ') + p.Vl_parcela.ToString("C2", new System.Globalization.CultureInfo("pt-BR")))); w.WriteLine(); w.WriteLine(); } w.WriteLine(); w.WriteLine(); w.WriteLine(" -----------------------------------------"); w.WriteLine(" Cliente "); w.WriteLine(); w.WriteLine(); //Imprimir observacao cupom if (!string.IsNullOrEmpty(val.Ds_observacao)) { string obs = val.Ds_observacao.Trim(); w.WriteLine("Observacoes".FormatStringDireita(42, '-')); while (true) { if (obs.Length <= 40) { w.WriteLine(" " + obs); break; } else { w.WriteLine(" " + obs.Substring(0, 40)); obs = obs.Remove(0, 40); } } } w.WriteLine(" -----------------------------------------"); w.WriteLine(" Este recibo nao tem valor Fiscal "); w.Write(Convert.ToChar(27)); w.Write(Convert.ToChar(109)); w.Flush(); decimal copias = CamadaNegocio.ConfigGer.TCN_CadParamGer.VlNumericoEmpresa("QTD_VIA_REC_ECF", val.Cd_empresa, null); if (copias.Equals(decimal.Zero)) { copias = 1; } for (int i = 0; i < copias; i++) { f.CopyTo(porta); } } catch (Exception ex) { throw new Exception("Erro na impressao: " + ex.Message.Trim()); } finally { w.Dispose(); f = null; } } }
public static string Gravar(TRegistro_PreVenda val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_PreVenda qtb_pre = new TCD_PreVenda(); try { if (banco == null) { st_transacao = qtb_pre.CriarBanco_Dados(true); } else { qtb_pre.Banco_Dados = banco; } val.Id_prevendastr = CamadaDados.TDataQuery.getPubVariavel(qtb_pre.Gravar(val), "@P_ID_PREVENDA"); //Gravar itens venda val.lItensDel.ForEach(p => TCN_ItensPreVenda.Excluir(p, qtb_pre.Banco_Dados)); val.lItens.ForEach(p => { p.Cd_empresa = val.Cd_empresa; p.Id_prevenda = val.Id_prevenda; TCN_ItensPreVenda.Gravar(p, qtb_pre.Banco_Dados); }); //Excluir financeiro TList_PreVenda_DT_Vencto lParc = TCN_PreVenda_DT_Vencto.Buscar(val.Id_prevendastr, val.Cd_empresa, qtb_pre.Banco_Dados); lParc.ForEach(p => TCN_PreVenda_DT_Vencto.Excluir(p, qtb_pre.Banco_Dados)); //Gravar financeiro val.DT_Vencto.ForEach(p => { p.Cd_empresa = val.Cd_empresa; p.Id_prevenda = val.Id_prevenda; TCN_PreVenda_DT_Vencto.Gravar(p, qtb_pre.Banco_Dados); }); //Resgatar Pontos Fidelidade if (val.lItens.Exists(p => p.Qtd_pontosutilizados > decimal.Zero)) { //Buscar listagem de pontos com saldo a recuperar CamadaDados.Faturamento.Fidelizacao.TList_PontosFidelidade lPontos = new CamadaDados.Faturamento.Fidelizacao.TCD_PontosFidelidade(qtb_pre.Banco_Dados).Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + val.Cd_empresa.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.cd_clifor", vOperador = "=", vVL_Busca = "'" + val.Cd_clifor.Trim() + "'" }, new 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 TpBusca() { vNM_Campo = "isnull(a.st_registro, 'A')", vOperador = "<>", vVL_Busca = "'C'" } }, 0, string.Empty, string.Empty); val.lItens.Where(p => p.Qtd_pontosutilizados > decimal.Zero).ToList().ForEach(p => { decimal pontos_resgatar = p.Qtd_pontosutilizados; decimal pontos = decimal.Zero; DateTime dt_atual = CamadaDados.UtilData.Data_Servidor(qtb_pre.Banco_Dados); foreach (CamadaDados.Faturamento.Fidelizacao.TRegistro_PontosFidelidade rPonto in lPontos.OrderBy(v => v.Dt_registro).ToList()) { if (pontos_resgatar > decimal.Zero) { pontos = pontos_resgatar < rPonto.SD_Pontos ? pontos_resgatar : rPonto.SD_Pontos; CamadaNegocio.Faturamento.Fidelizacao.TCN_ResgatePontos.Gravar( new CamadaDados.Faturamento.Fidelizacao.TRegistro_ResgatePontos() { Cd_empresa = rPonto.Cd_empresa, Id_ponto = rPonto.Id_ponto, Login = Utils.Parametros.pubLogin, Qt_pontos = pontos, Dt_resgate = dt_atual, Id_prevenda = val.Id_prevenda, Id_itemprevenda = p.Id_itemprevenda, St_registro = "A" }, qtb_pre.Banco_Dados); pontos_resgatar -= pontos; rPonto.Pontos_res += pontos; } else { break; } } }); } if (st_transacao) { qtb_pre.Banco_Dados.Commit_Tran(); } return(val.Id_prevendastr); } catch (Exception ex) { if (st_transacao) { qtb_pre.deletarBanco_Dados(); } throw new Exception("Erro gravar venda: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_pre.deletarBanco_Dados(); } } }