Fórum
Ver pergunta

Como manipular um Editor de Vendas aberto (exemplo: adicionar uma linha) apartir de um Form   

285 visualizações
0
0

Como manipular um Editor de Vendas aberto (exemplo: adicionar uma linha) apartir de um Form:

Abaixo o meu Codigo.

public EditorVendas Editor { get; set; }

public void inserelinha(string item, double valor)
{

BasBEArtigo Artigo = new BasBEArtigo();
VndBELinhaDocumentoVenda linha = new VndBELinhaDocumentoVenda();
Artigo = BSO.Base.Artigos.Edita(item);

if (!BSO.Base.Artigos.Existe(Artigo.Artigo))
{
PSO.Dialogos.MostraMensagem(StdPlatBS100.StdBSTipos.TipoMsg.PRI_Detalhe, "O Artigo " + Artigo.Artigo + " Não Existe");
}
else
{
linha.Artigo = Artigo.Artigo;
linha.TipoLinha = "20";
linha.Descricao = Artigo.Descricao;
linha.Quantidade = 1;
linha.Unidade = "UN";
linha.PrecUnit = valor;
linha.CodIva = Artigo.IVA;
linha.TaxaIva = BSO.Base.Iva.DaValorAtributo(linha.CodIva, "taxa");
linha.PercIncidenciaIVA = Convert.ToSingle(Artigo.PercIncidenciaIVA);
linha.CodIva = BSO.Base.Artigos.Edita(linha.Artigo).IVA;
Editor .DocumentoVenda.Linhas.Insere(linha);
}
linha = null;
}

 

 

 

Faça login para poder traduzir
Integração
V10
Marcado como spam
Criado há 5 anos e 5 meses felicianonhavotso
6 respostas
1
Resposta privada

Problema resolvido.
Para quem pretende usar um CustomForm Primavera, use o codigo abaixo:

Na Classe:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Primavera.Extensibility.BusinessEntities;
using Primavera.Extensibility.BusinessEntities.ExtensibilityService.EventArgs;
using Primavera.Extensibility.Sales.Editors;

namespace EditorVendasEx.Sales
{
public class UiEditorVendas : EditorVendas
{
public override void ClienteIdentificado(string Cliente, ref bool Cancel, ExtensibilityEventArgs e)
{
using (var result = BSO.Extensibility.CreateCustomFormInstance(typeof(PriformContadores)))
{
var form = (result.Result as PriformContadores);
form._docVenda = this.DocumentoVenda;
form._erp = this.BSO;
form.ShowDialog();
}
base.ClienteIdentificado(Cliente, ref Cancel, e);
}
}
}

No form Primavera:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Primavera.Extensibility.BusinessEntities;
using Primavera.Extensibility.CustomForm;

namespace EditorVendasEx
{
    public partial class PriformContadores : CustomForm
    {
        public VndBE100.VndBEDocumentoVenda _docVenda { get; set; }
        public ErpBS100.ErpBS _erp { get; set; }
        public PriformContadores()
        {
            InitializeComponent();
        }
        public PriformContadores(VndBE100.VndBEDocumentoVenda documentoVenda, ErpBS100.ErpBS erpBS)
        {
            _docVenda = documentoVenda;
            _erp = erpBS;
            InitializeComponent();
        }

        private void PriformContadores_Load(object sender, EventArgs e)
        {
            _erp.Vendas.Documentos.AdicionaLinha(_docVenda, "A0001");
        }
    }
}

 

Faça login para poder traduzir
Marcado como spam
Criado há 5 anos e 3 meses felicianonhavotso
    1
    Resposta privada

    Podem fazer assim:

    Na classe de suporte ao evento:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Primavera.Extensibility.BusinessEntities;
    using Primavera.Extensibility.BusinessEntities.ExtensibilityService.EventArgs;
    using Primavera.Extensibility.Sales.Editors;
    
    namespace ExtensibilityProject6.Sales
    {
        public class UiEditorVendas : EditorVendas
        {
            public override void TeclaPressionada(int KeyCode, int Shift, ExtensibilityEventArgs e)
            {
                Form1 f = new Form1(this.DocumentoVenda,this.BSO);
                f.ShowDialog();
                
                base.TeclaPressionada(KeyCode, Shift, e);
            }
        }
    }

    No formulário

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace ExtensibilityProject6.Sales
    {
        public partial class Form1 : Form
        {
            private VndBE100.VndBEDocumentoVenda _docVenda;
            private ErpBS100.ErpBS _erp;
    
            public Form1()
            {
                InitializeComponent();
            }
    
            public Form1(VndBE100.VndBEDocumentoVenda documentoVenda, ErpBS100.ErpBS erpBS )
            {
                _docVenda = documentoVenda;
                _erp = erpBS;
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                _erp.Vendas.Documentos.AdicionaLinha(_docVenda, "A0001");
            }
    
        }
    }
    

    O segredo está em chamar o formulário como showdialog para o evento internamente apenas seja chamado depois de se adicionar a linha.

    Faça login para poder traduzir
    Marcado como spam
    Criado há 5 anos e 3 meses sergiosereno
    sergiosereno Most Valuable Professional
      0
      Resposta privada

      Tentei contornar o problema mas não consegui! Muitos projectos de migração dependem desse problema, na V9 eu conseguia inserir no editor de vendas através de um form

      Faça login para poder traduzir
      Marcado como spam
      Criado há 5 anos e 5 meses felicianonhavotso
        Comentários
        Olá boa tarde Feliciano, ainda está com esse problema? Estou agora a passar pelo mesmo...alguma novidade sobre a forma de contornar?
        5 anos e 3 meses
        paulosantosdacunha
          -1
          Resposta privada

          Sinta-se Comprimentado

          Como posso fazer para Inserir informação do Editor de Vendas através de um Form?

           

          Faça login para poder traduzir
          Marcado como spam
          Criado há 5 anos e 5 meses felicianonhavotso
            -1
            Resposta privada
            Marcado como spam
            Criado há 5 anos e 5 meses felicianonhavotso
              0
              Resposta privada

              Isso não podes fazer. Isto é não podes fazer com que o editor carregue um objeto a partir de uma classe externa.

              Faça login para poder traduzir
              Marcado como spam
              Criado há 5 anos e 5 meses sergiosereno
              sergiosereno Most Valuable Professional
                Comentários
                Olá Sérgio boa tarde, tenho um problema similar, estou a migrar código para a V10 em que a partir do EditorDeVendas,(Tecla pressionada) abro um form , depois tenho um algoritmo para efetuar uns cálculos, e adiciono uma ou n linhas no editor resultado desses cálculos(e encerro o form), alguma dica para contornar esta diferença de comportamento? Obrigado.
                5 anos e 3 meses
                paulosantosdacunha
                  @paulosantos reposta adicionada
                  5 anos e 3 meses
                  sergiosereno