Controlar data de validade de mercadoria por lote

Bom dia pessoa, estou precisando de uma ideia de como implementar uma logica para esse problema q me deparei, estou desenvolvendo do software para uma mini supermercado onde o cliente veio a me solicitar uma funcionalidade para controlar os produtos com a data de validade ate pensei q fosse fácil mas fiquei no meio do caminho a logica para da entrada com o numero do lote e data de vencimento eu ate consegui implementa o problema q estou vendo é na hora de fazer abaixa do produto, já q ele vai utilizar um leito de código de barra para agilizar o processo da venda, então como faria essa saída do produto identificando o lote q foi vendido ? Alguém ai tem alguma ideia de como devo implementa essa saída do produto? Sou grato a todos q possa colabora com a resolução desse problema.
Um forte a abraço a tds e fique com DEUS

Um lote possui vários produtos com característica(s) igual(is). Neste caso, é a data de vencimento. Logo, quando você realizar a leitura do código de barras, terá de identificar a qual lote o produto pertence. Assim sendo, você consegue realizar a baixa.

Mas é essa a dificuldade dele, identificar o lote.
Numero de lote, assim como data de validade não pode ser atributo de produto, pois um mesmo produto (arroz) podem e vão ter datas de validades distintas.
Imagino eu, que você tenha feito alguma funcionalidade de “Entrada de Produtos”, uma tela mesmo onde os produtos vão sendo selecionados e dando entrada no estoque, aumentando a quantidade em estoque do produto (essa quantidade sim é um atributo do produto, ao menos que queira saber a quantidade de produtos em estoque por data de validade, na qual seria até interessante).
Portanto, nessa tabela de entrada de produtos, vc vai ter os atributos normais de uma entrada, e adicionaria o numero do lote aí.
Após ter o numero do lote cadastrado em algum lugar, como na tabela de entrada de produto, vc vai ter cada codigo de produto entrado, fica fácil fazer o relacionameto pra pegar o numero do lote…

Pensei agora que deve ser a melhor maneira, mas pode ser que alguem tenha ideia melhor, ou trabalhe com ERPs mesmo e fale como é feito.

Bom dia a todos, e muito obrigado pela colaboração. igor_ks eu fiz o esquema para realizar a entrada com o lote e data de validade da seguinte maneira, tenha uma tabela de lote onde tem os atributos, id_lote, lote, validade e quantidade. Na hora q estou dando entrada do produto exite os campos lote e validade os mesmo serão habilitado de acordo a verificação do cadastro do produto estive selecionando a opção controlar lote sendo verdadeiro é obrigatório o preenchimento dos campos ao salvar o item da entrada na tabela compraDet o produto q for controlar o lote tbm é salvo na tabela lote então o procedimento na entrada ta funcionando certinho, estive conversando com alguns brother sobre a saída ate agora a unica solução é ao dar saída do produto ele faz a mesma verificação do produto como na entrada e o produto q estive o controle do lote ira abrir uma janela com os lotes cadastrado para esse produto para assim ser selecionando e dando baixa corretamento. Mas sendo assim não vejo possibilidade de por pq vai ser um transtorno para o usuário e o cliente.
Essa ideia sua não entendi muito bem como funcionaria já q tenho esse relacionamento entre a tabela lote e compraDet, quando dou saída do produto ele me traz os atributos do produto onde e como eu iria relacionar a tabela de produto com lote.