Bom dia, tenho uma função que gera uma Oportunidade de venda e uma proposta sobre essa OPV
O codigo gera a proposta e a oportunidade de venda corretamente, no entanto, na tabela cabecoportunidade de venda, os totais são estão a ser atualizados:
Campos esses:
MargemOV
MargempercOV
ValorTotalOV
O que é que está a faltar?
Alguem me pode ajudar?
Obrigado
Segue abaixo o codigo
try
{
CrmBEOportunidadeVenda opv;
CrmBEPropostaOPV sProp;
CrmBELinhaPropostaOPV linProp;
StdBELista stdLinProp;
int numProp;
Boolean temPropostasSelecionadas;
string optOrigem;
temPropostasSelecionadas = false;
if (dgvDuplicaPropostas.SelectedRows.Count==0)
{
this.ContextService.PSO.Dialogos.MostraAviso(“Impossivel duplicar OPV.” +
” Tem de selecionar pelo menos um numero de proposta.”);
return;
}
if (this.ContextService.BSO.Base.Clientes.Existe(txtCliente.Text)==false)
{
this.ContextService.PSO.Dialogos.MostraAviso(“Impossivel duplicar OPV.” +
” Tem de selecionar pelo menos cliente válido.”);
return;
}
optOrigem = this.ContextService.OportunidadeVenda.Oportunidade;
opv = new CrmBEOportunidadeVenda();
opv.Oportunidade = DaProximoNumOPV();
opv.CicloVenda = this.ContextService.BSO.CRM.OportunidadesVenda.DaValorAtributo(optOrigem, “ciclovenda”);
opv.Descricao = this.ContextService.BSO.CRM.OportunidadesVenda.DaValorAtributo(optOrigem, “descricao”);
opv.TipoEntidade = “C”;
opv.Entidade = txtCliente.Text;
opv.Moeda = this.ContextService.BSO.Contexto.MoedaBase;
opv.Vendedor = this.ContextService.BSO.CRM.OportunidadesVenda.DaValorAtributo(optOrigem,”vendedor”);
opv.DataCriacao = DateTime.Now;
opv.DataExpiracao= new DateTime(DateTime.Now.Year, 12, 31);
this.ContextService.BSO.CRM.OportunidadesVenda.Actualiza(opv);
if (opv.LinhasContacto.Count() == 0)
{
if (this.ContextService.PSO.Dialogos.MostraPerguntaSimples(“Não existe nenhum contacto associado a esta OPV. Deseja associar um?”) == true)
{
using (var result = this.ContextService.BSO.Extensibility.CreateCustomFormInstance(typeof(PriFrmContactos)))
{
(result.Result as PriFrmContactos).sOrig = “OPV”;
(result.Result as PriFrmContactos).sTipoEnt = opv.TipoEntidade;
(result.Result as PriFrmContactos).codEntidadeEmUso = opv.Entidade;
(result.Result as PriFrmContactos).sPermiteEnviarEmail = false;
(result.Result as PriFrmContactos).ShowDialog();
string sCodContacto;
sCodContacto = (result.Result as PriFrmContactos).sContactoSelecionado;
if (sCodContacto.Length > 0)
{
opv.LinhasContacto.RemoveTodos();
BasBELinhaContactoOVEnda lincnt;
lincnt = new BasBELinhaContactoOVEnda();
opv = this.ContextService.BSO.CRM.OportunidadesVenda.Edita(opv.Oportunidade);
lincnt.IDCabecOVenda = opv.ID;
lincnt.IDContacto = this.ContextService.BSO.Base.Contactos.DaValorAtributo(sCodContacto, “ID”);
lincnt.Avaliacao = “0”;
opv.LinhasContacto.Insere(lincnt);
this.ContextService.BSO.CRM.OportunidadesVenda.Actualiza(opv);
}
}
}
}
//sProp = new CrmBEPropostaOPV();
//sProp.IdOportunidade = opv.ID;
numProp = 0;
for (int i = 0; i <= dgvDuplicaPropostas.Rows.Count – 1; i++)
{
if (dgvDuplicaPropostas.Rows[i].Selected==true)
{
sProp = new CrmBEPropostaOPV();
sProp.IdOportunidade = opv.ID;
numProp += 1;
stdLinProp = this.ContextService.BSO.Consulta(“select linha,isnull(artigo,”)artigo,isnull(descricao,”)descricao,quantidade,isnull(unidade,”)unidade,factorconv,precocusto,precovenda,desconto,desconto1,desconto2,desconto3,valordesconto,rentabilidade,margem,isnull(observacoes,”)observacoes,cdu_grupo,cdu_ordem,isnull(cdu_desccomp,”)cdu_desccomp,cdu_newlinha,isnull(cdu_fornecedor,”)cdu_fornecedor,isnull(cdu_ref_forn,”)cdu_ref_forn,isnull(cdu_ref_fabricante,”)cdu_ref_fabricante from linhaspropostasopv(nolock) where idoportunidade in (select id from CabecOportunidadesVenda(nolock) where Oportunidade='” + optOrigem + “‘) and numproposta=” + dgvDuplicaPropostas.CurrentRow.Cells[“proposta”].Value + “”);
while (!stdLinProp.NoFim())
{
linProp = new CrmBELinhaPropostaOPV();
linProp.NumProposta = numProp;
linProp.Linha = stdLinProp.Valor(“linha”);
linProp.IdOportunidade = opv.ID;
linProp.Artigo = stdLinProp.Valor(“artigo”);
linProp.Descricao = stdLinProp.Valor(“descricao”);
linProp.Quantidade = stdLinProp.Valor(“quantidade”);
linProp.Unidade = stdLinProp.Valor(“unidade”);
linProp.FactorConv = stdLinProp.Valor(“factorconv”);
linProp.PrecoCusto = stdLinProp.Valor(“precocusto”);
linProp.PrecoVenda = stdLinProp.Valor(“precovenda”);
linProp.Desconto = stdLinProp.Valor(“desconto”);
linProp.Desconto1 = stdLinProp.Valor(“desconto1”);
linProp.Desconto2 = stdLinProp.Valor(“desconto2”);
linProp.Desconto3 = stdLinProp.Valor(“desconto3”);
linProp.ValorDesconto = stdLinProp.Valor(“valordesconto”);
linProp.Rentabilidade = stdLinProp.Valor(“rentabilidade”);
linProp.Margem = stdLinProp.Valor(“margem”);
linProp.Observacoes = stdLinProp.Valor(“observacoes”);
linProp.CamposUtil[“cdu_grupo”].Valor = stdLinProp.Valor(“cdu_grupo”);
linProp.CamposUtil[“cdu_ordem”].Valor = stdLinProp.Valor(“cdu_ordem”);
linProp.CamposUtil[“cdu_desccomp”].Valor = stdLinProp.Valor(“cdu_desccomp”);
linProp.CamposUtil[“cdu_newlinha”].Valor = stdLinProp.Valor(“cdu_newlinha”);
linProp.CamposUtil[“cdu_fornecedor”].Valor = stdLinProp.Valor(“cdu_fornecedor”);
linProp.CamposUtil[“cdu_ref_forn”].Valor = stdLinProp.Valor(“cdu_ref_forn”);
linProp.CamposUtil[“cdu_ref_fabricante”].Valor = stdLinProp.Valor(“cdu_ref_fabricante”);
sProp.NumProposta = numProp;
sProp.Linhas.Insere (linProp);
stdLinProp.Seguinte();
}
sProp.IdOportunidade = opv.ID;
this.ContextService.BSO.CRM.PropostasOPV.Actualiza(sProp);
}
}
this.ContextService.PSO.Dialogos.MostraAviso(“Registo duplicado com sucesso. Foi gerada a OPV nº: ” + opv.Oportunidade);