FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Impresion De Comandas
Hola buen día a todos, espero me puedan ayudar o detectar mi error de antemano gracias por permitir poner este tema. Estoy realizando un pool de impresiones pero tengo el problema de que no imprime completo la orden de la comanda; es decir que desde un dispositivo móvil genera la orden y envía a MySQL a una tabla llamada p_POOL_CMDA y entonces una vez llegada la información tengo un programa que realice con un thread para estar recibiendo las ordenes y de ahí enviarlas a sus respectivas direcciones (cocina, bebidas, etc). Pero resulta que cuando llegan algunas ordenes llegan un retarde de 1 milesegundo y mi programa ya tomo la información inicial y no envía completo:
Cita:
Cita:
Mi programa de ej. Código:
procedure TForm1.btnRefreshClick(Sender: TObject); begin btnRefresh.Enabled := False; tmPrint.Enabled := False; t := TThread.CreateAnonymousThread(procedure var x : integer; SavePlace : TBookmark; begin x := 1; SQLExecute.SQL.Text := 'DELETE FROM p_POOL_CMDAS WHERE ESTATUS = "EN" '; SQLExecute.ExecSQL(); qry_geral.Close; qry_geral.SQL.Text := 'SELECT PC.ID, ID_COMANDA, FCH_HORA, ID_CODSKU, ' + 'DESCRIP, QTY, PRECIO, ID_CUENTA, ID_MESERO, TOT_COMENSAL,'+ 'ID_SECC_PREPAR, TIPSKU, DESCRIP_OLD, ID_GRUPO, MESAUNIDA,' + 'ESTATUS,US.NOMBRE AS NAME_MESERO ' + 'FROM p_POOL_CMDAS PC ' + 'JOIN m_USUARIOS US ON PC.ID_MESERO = US.CVE ' + 'WHERE ESTATUS <> "EN" ' + 'ORDER BY ID_GRUPO, ID '; sleep(500); qry_geral.Open(); qry_geral.First; while NOT qry_geral.Eof do begin etapa := 'Selección de Comandas'; TThread.Synchronize(nil, procedure begin lbl.Caption := x.ToString; Add_Cmdas_Print(qry_geral.FieldByName('ID_COMANDA').AsInteger, qry_geral.FieldByName('FCH_HORA').AsString, qry_geral.FieldByName('ID_CODSKU').AsString, qry_geral.FieldByName('DESCRIP').AsString, qry_geral.FieldByName('QTY').AsFloat, qry_geral.FieldByName('PRECIO').AsFloat, qry_geral.FieldByName('ID_CUENTA').AsString, qry_geral.FieldByName('ID_MESERO').AsInteger, qry_geral.FieldByName('TOT_COMENSAL').AsInteger, qry_geral.FieldByName('ID_SECC_PREPAR').AsInteger, qry_geral.FieldByName('TIPSKU').AsString, qry_geral.FieldByName('DESCRIP_OLD').AsString, qry_geral.FieldByName('ID_GRUPO').AsInteger, qry_geral.FieldByName('MESAUNIDA').AsBoolean, qry_geral.FieldByName('ESTATUS').AsString, qry_geral.FieldByName('NAME_MESERO').AsString, qry_geral.FieldByName('ID').AsInteger ); end); x := x + 1; qry_geral.Next; end; // END WHILE etapa := 'Impresión de comandas'; pkFOLIO := ''; if mmOrden.RecordCount > 0 then begin mmOrden.DisableControls; mmOrden.First; while not( mmOrden.Eof) do begin if mmOrdenESTATUS.AsString <> 'EN' then begin TThread.Synchronize(nil, procedure begin lbl.Caption := x.ToString; (* OBTIENE EL NUMERO DE COMANDA *) pkFOLIO := mmOrdenID_COMANDA.AsString; (* ENVIAR IMPRESION *) PrintComanda(pkFOLIO); SavePlace := mmOrden.GetBookmark; ChangeStatus(); (* GUARDAR LA COMANDA *) SaveComanda(); mmOrden.GotoBookmark( SavePlace ); sleep(300); end); end; mmOrden.Next; end; // END WHILE mmOrden.EnableControls; end; etapa := 'API'; mmOrden.EmptyDataSet; mmOrden.Refresh; tmPrint.Enabled := True; end); //t.FreeOnTerminate := true; t.OnTerminate := ThreadEnd; t.Start; end; Última edición por Neftali [Germán.Estévez] fecha: 22-03-2024 a las 15:22:24. Razón: Corregir link dela imagen |
#2
|
||||
|
||||
No he leido el código, pero según tu mensaje, creo que la aplicación que hace el pool de impresión solo deberá tener en cuenta comandas "viejas" (con una antigüedad de más de "5" segundos).
De esta manera, si los terminales tardan 1 o 2 segundos en transmitir las líneas de la comanda, siempre verás comandas completas. Algo así (firebird):
|
#3
|
|||
|
|||
Hola duilioisola, gracias por tu respuestas lo probare y te comento mas tarde. Me parece una muy buena solución
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problema con las comandas de STRING | cesar.zapata | Varios | 3 | 23-10-2012 02:08:44 |
Impresion | shoulder | Varios | 3 | 29-03-2010 19:37:11 |
Fin de Impresion | luxus | Impresión | 3 | 19-12-2007 01:45:32 |
Impresion con Rav | Alejandro73 | Impresión | 0 | 21-06-2007 20:27:02 |
Problema de impresion Detener la Impresion | Gangster | Impresión | 2 | 26-01-2007 20:22:12 |
|