Processo Importar Ordem PV/PC


#1

Ola,

Nas ordens de venda/compra quando importamos as linhas de outros pedidos, não importa o atributo de instância sugiro que no metodo copyLinesFrom da classe MOrder seja incluido a sequinte linha

line.set_ValueOfColumn(“M_AttributeSetInstance_ID”, fromLines[i].get_Value(“M_AttributeSetInstance_ID”));

alguma outra sugestão?


#2

Olá Edilson, tudo bom?

Então eu não recomendo o uso assim, pois copiar o ID do AttributeSetInstance pode gerar um erro. Vou explicar:

Imagina que vc precise modificar alguma coisa no Atributo que foi copiado, como ele está com o mesmo ID, a alteração será refletida para todas as instâncias.

Acredito que o correto seria copiar todo o conteúdo da M_AttributeInstance e gerar um novo M_AttributeSetInstance_ID.

Conseguiu entender meu ponto de vista?

Abraços,


#3

Ola Ricardo,

Estamos super felizes por vocês terem chegado a um entendimento, todos do projeto.

Sobre a sugestão do código, penso que esse é o interesse de copiar as linhas de outro pedido como está la mesmo. Todas as informações da ordem que serão copiadas inclusive o atributo de instância.

É verdade se for alterado o atributo de instancia vai refletir em todos os lugares onde foi usado, mas usando a linha de pensamento do Adempiere isso ja pode ocorrer em qualquer lugar que seja acessado o atributo de instancia, então não vejo problema na importação dessa linha.

att.
edilsondneto/paulo dantas


#4

Olá Paulo / Edilson,

Todos trabalhando no mesmo projeto sem dúvida é melhor para a comunidade brasileira. :smiley:

Vou tentar explicar melhor o que eu acho que pode ser problema:

Então, quando falamos de Atributo temos que imaginar os dois cenários, um atributo de produto e um atributo de instância. O atributo de produto fica fixo no cadastro de produto, e quando marcamos os atributos como instância ou selecionamos as opções Número de Série, Lote ou validade estamos falando de atributos de instância, serão atributos diferentes para cada transação, ou seja, cada produto poderá ter atributos diferentes.

Imagina que fizemos um pedido do produto T-Shirt e como atributo, selecionamos Green-Large. Logo em seguida o seu cliente pediu para também enviar T-Shirt Green-Small, então o caminho mais fácil seria copiar a OV original e mudar o atributo de Large para Small, ao fazer isso você estará modificando os 2 pedidos, pois o mesmo M_AttributeSetInstance_ID está nos dois pedidos. Quando for fazer a expedição será expedido 2 x T-Shirt Green-Small.

A minha sugestão seria modificar o processo de cópia, para ele também copiar os registro da M_AttributeInstance (neste exemplo os atributos Green e Large) e relacioná-los num novo registro M_AttributeSetInstance_ID. Desta forma fica independente, se você modificar algo em qualquer dos dois pedidos, as alterações ficarão apenas nos registros que foram modificados.

Um Abraço,


#5

Estamos aqui tentando fazer o que podemos.

Foi apenas uma sugestão de alteração, por favor me diga como manter a rastreabilidade sem usar o mesmo atributo de instância?

Ricardo, o que acho e que não deixei claro é se a pessoa escolher de forma manual poder alterar da mesma forma que automática, então essa forma automática apenas ajudaria na digitação.


#6

Edilson, fiz a alteração no seu BUG Tracker, fiz igual o Ricardo mencionou acima, pois também considero a correta, favor validar o código e se achar que esta errada comente no tracker, para que agente possa analisar o que está errado.

sourceforge.net/tracker/index.p … tid=996639

sds, Mario


#7

Sobre o código deu um erro e fiz um typecast, sei que na PO existe o metodo get_ValueAsInt, mas aqui ta problema ele quer um int…mas então ficou assim:

int M_AttributeSetInstance_ID = (Integer)fromLines[i].get_Value(“M_AttributeSetInstance_ID”);

Mas vou citar um exemplo.

1º Faço uma venda de um celular XYZ com atributo de instância #147258369 " M_AttributeSetInstance_ID = 123456".

2º Aquele telefone volta para conserto e tenho que buscar o celular XYZ com atributo de instância #147258369 " M_AttributeSetInstance_ID = 123456", se eu criar um novo atributo de instância #147258369 " M_AttributeSetInstance_ID = 123457" não será o mesmo, pois vou ter dois atributos de instância #147258369 com " M_AttributeSetInstance_ID = 123456 e 123457" é isso que não acho certo.

Continuando na mesma linha de raciocino, se eu tivesse que movimentar o produto para outros setores da empresa por tipos diferentes de documento e contivesse esses dois M_AttributeSetInstance_ID para o mesmo produto não vai realizar movimentação entre os armazéns, movimento 123456 mas o 123457 ainda vai ficar no mesmo armazém.

Isso é apenas uma forma para agilizar o serviço, mesmo que a pessoa faça de forma manual buscando o atributo de instância ela vai poder alterar. Não é por conta de ter importado as linhas que vai da problema. Se eu soubesse como desabilitar na janela de atributo de instância o “campo editar” de acordo com a “configuração do sistema” eu o faria, criando uma variável Allow_EDIT_M_AttributeSetInstance= Y ou N;


#8

Sim, eu entendi o outro caso… eu acho que não tem solução então…

Pq vc tbm pode querer comprar o mesmo produto, mas ser outro lote por exemplo e dai neste caso, vc não consegue criar um novo… talvez seria o caso de conseguir “resetar” o M_AttributeSetInstance_ID, pois depois que vc coloca não dá para tirar :frowning:

Dai sim, acho que a sua solução de atribuir o mesmo seria a melhor…