como imprimir uma conferencia de mesas com os produtos agrupados?
Fala galera, estou quebrando cabeça com essa questão, consiguir fazer o layout dá impressão, mas não consigo fazer o agrupamento dos produtos iguais.
procedure TFrmPDV.ImprimeRestaurantePadrao;
var
vEndereco, sTexto: String;
SL: TStringList;
begin
if Dados.qryTerminalCAMINHO_BAR.AsString = Dados.qryTerminalCAMINHO_COZINHA.AsString
then
begin
try
qryItem.DisableControls;
SL := TStringList.Create;
SL.Add('<n>' + Dados.qryEmpresaFANTASIA.AsString + '</n>');
SL.Add('</linha_simples>');
sTexto := 'Pedido No. ' + FormatFloat('0000', qryVendaCODIGO.AsFloat);
SL.Add('<n>' + PadCenter(sTexto, Dados.qryTerminalCOLUNAS.AsInteger, '*')
+ '</n>');
SL.Add('</linha_simples>');
sTexto := qryVendaFK_MESA.AsString;
SL.Add('</ae>Mesa...: ' + sTexto);
SL.Add('Data/Hora...:' + DateTimeToStr(now));
SL.Add('</linha_simples>');
SL.add('<c>' + PadRight('PRODUTO', 26) +
PadRight('QTD', 6) + PadLeft('VALOR', 8) + PadLeft('TOTAL', 10) + '</c>');
qryItem.First;
While not qryItem.eof do
begin
SL.Add('<c>' +
PadRight(qryItem.FieldByName('DESCRICAO_SL').AsString, 26) +
PadLeft(qryItem.FieldByName('QTD').AsString, 6) +
PadLeft(FormatFloat('0.00', qryItem.FieldByName('VALOR_ITEM').AsFloat), 8) +
PadLeft(FormatFloat('0.00', qryItem.FieldByName('TOTAL').AsFloat),
10) + '</c>');
if trim(qryItem.FieldByName('OBSERVACAO').AsString) <> '' then
SL.Add(qryItem.FieldByName('OBSERVACAO').AsString);
SL.Add('</linha_simples>');
qryItem.Next;
end;
SL.add('<c>' + '</ae>SubtTotal..: ' + FormatFloat('###,##00.00',
qryVendaSUBTOTAL.AsFloat)+ '</c>');
SL.Add('</corte>');
procedure TFrmPDV.ImprimeRestaurantePadrao;
var
vEndereco, sTexto: String;
SL: TStringList;
begin
if Dados.qryTerminalCAMINHO_BAR.AsString = Dados.qryTerminalCAMINHO_COZINHA.AsString
then
begin
try
qryItem.DisableControls;
SL := TStringList.Create;
SL.Add('<n>' + Dados.qryEmpresaFANTASIA.AsString + '</n>');
SL.Add('</linha_simples>');
sTexto := 'Pedido No. ' + FormatFloat('0000', qryVendaCODIGO.AsFloat);
SL.Add('<n>' + PadCenter(sTexto, Dados.qryTerminalCOLUNAS.AsInteger, '*')
+ '</n>');
SL.Add('</linha_simples>');
sTexto := qryVendaFK_MESA.AsString;
SL.Add('</ae>Mesa...: ' + sTexto);
SL.Add('Data/Hora...:' + DateTimeToStr(now));
SL.Add('</linha_simples>');
SL.add('<c>' + PadRight('PRODUTO', 26) +
PadRight('QTD', 6) + PadLeft('VALOR', 8) + PadLeft('TOTAL', 10) + '</c>');
qryItem.First;
While not qryItem.eof do
begin
SL.Add('<c>' +
PadRight(qryItem.FieldByName('DESCRICAO_SL').AsString, 26) +
PadLeft(qryItem.FieldByName('QTD').AsString, 6) +
PadLeft(FormatFloat('0.00', qryItem.FieldByName('VALOR_ITEM').AsFloat), 8) +
PadLeft(FormatFloat('0.00', qryItem.FieldByName('TOTAL').AsFloat),
10) + '</c>');
if trim(qryItem.FieldByName('OBSERVACAO').AsString) <> '' then
SL.Add(qryItem.FieldByName('OBSERVACAO').AsString);
SL.Add('</linha_simples>');
qryItem.Next;
end;
SL.add('<c>' + '</ae>SubtTotal..: ' + FormatFloat('###,##00.00',
qryVendaSUBTOTAL.AsFloat)+ '</c>');
SL.Add('</corte>');
Mario
Curtidas 0
Respostas
Arthur Heinrich
29/10/2023
O segredo parece estar na query utilizada em "qryItem".
Você pode utilizar uma query que consolide os dados, de acordo com o tipo de item, agregando a quantidade e valor total dos itens.
Se quiser, poste a query utilizada.
Você pode utilizar uma query que consolide os dados, de acordo com o tipo de item, agregando a quantidade e valor total dos itens.
Se quiser, poste a query utilizada.
GOSTEI 0