- Se corrigió que cuando se metía un producto variable, al renombrarlo se borraba la lista de productos de la mesa.

This commit is contained in:
2024-05-16 12:27:03 -06:00
parent a78af8bb87
commit c211493a82
4 changed files with 42 additions and 17 deletions

View File

@@ -84,7 +84,7 @@ Version=12.8
#Region Project Attributes #Region Project Attributes
#ApplicationLabel: Lanterna #ApplicationLabel: Lanterna
#VersionCode: 1 #VersionCode: 1
#VersionName: 4.04.28 #VersionName: 4.05.15
'SupportedOrientations possible values: unspecified, landscape or portrait. 'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: landscape #SupportedOrientations: landscape
#CanInstallToExternalStorage: False #CanInstallToExternalStorage: False
@@ -195,6 +195,8 @@ Sub Activity_KeyPress (key As Int) As Boolean
End If End If
Return True Return True
' Returning False signals the system to handle the key ' Returning False signals the system to handle the key
End Sub End Sub
Sub Activity_Pause (UserClosed As Boolean) Sub Activity_Pause (UserClosed As Boolean)
@@ -324,7 +326,8 @@ Sub JobDone(Job As HttpJob)
Dim CAT_GP_FECHA_MOD As String = records(result.Columns.Get("CAT_GP_FECHA_MOD")) Dim CAT_GP_FECHA_MOD As String = records(result.Columns.Get("CAT_GP_FECHA_MOD"))
Dim CAT_GP_CLASIF As String = records(result.Columns.Get("CAT_GP_CLASIF")) Dim CAT_GP_CLASIF As String = records(result.Columns.Get("CAT_GP_CLASIF"))
Dim CAT_GP_TIPO As String = records(result.Columns.Get("CAT_GP_TIPO")) Dim CAT_GP_TIPO As String = records(result.Columns.Get("CAT_GP_TIPO"))
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO,CAT_GP_ALMACEN,CAT_GP_IMG,CAT_GP_FECHA,CAT_GP_FECHA_MOD, CAT_GP_CLASIF, CAT_GP_TIPO) VALUES (?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO,CAT_GP_ALMACEN,CAT_GP_IMG,CAT_GP_FECHA,CAT_GP_FECHA_MOD,CAT_GP_CLASIF,CAT_GP_TIPO)) Dim CAT_GP_ORDENAMIENTO As Int = records(result.Columns.Get("CAT_GP_ORDENAMIENTO"))
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO,CAT_GP_ALMACEN,CAT_GP_IMG,CAT_GP_FECHA,CAT_GP_FECHA_MOD, CAT_GP_CLASIF, CAT_GP_TIPO, CAT_GP_ORDENAMIENTO) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO,CAT_GP_ALMACEN,CAT_GP_IMG,CAT_GP_FECHA,CAT_GP_FECHA_MOD,CAT_GP_CLASIF,CAT_GP_TIPO,CAT_GP_ORDENAMIENTO))
Next Next
For v = 1 To 20 'Agregamos productos varios (editables) For v = 1 To 20 'Agregamos productos varios (editables)
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO,CAT_GP_ALMACEN,CAT_GP_IMG,CAT_GP_FECHA,CAT_GP_FECHA_MOD, CAT_GP_CLASIF, CAT_GP_TIPO) VALUES (?,?,?,?,?,?,?,?,?)", Array As Object ($"AVAR${NumberFormat2(v, 2, 0, 0, False)}"$,$"Alimentos Varios ${NumberFormat2(v, 2, 0, 0, False)}"$,"1","10000",Null,"2024-02-04 17:00:00","2024-02-04 17:00:00","VARIOS","ALIMENTOS")) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO,CAT_GP_ALMACEN,CAT_GP_IMG,CAT_GP_FECHA,CAT_GP_FECHA_MOD, CAT_GP_CLASIF, CAT_GP_TIPO) VALUES (?,?,?,?,?,?,?,?,?)", Array As Object ($"AVAR${NumberFormat2(v, 2, 0, 0, False)}"$,$"Alimentos Varios ${NumberFormat2(v, 2, 0, 0, False)}"$,"1","10000",Null,"2024-02-04 17:00:00","2024-02-04 17:00:00","VARIOS","ALIMENTOS"))

View File

@@ -22,6 +22,6 @@ ModuleClosedNodes4=
ModuleClosedNodes5=2,3,5 ModuleClosedNodes5=2,3,5
ModuleClosedNodes6= ModuleClosedNodes6=
ModuleClosedNodes7= ModuleClosedNodes7=
NavigationStack=Principal,resalta,335,0,Main,b_cargaProductos_Click,210,6,Principal,Activity_Create,262,6,Principal,p_mesasItem_Click,1139,0,Principal,b_mesaEditar_Click,1274,0,Principal,b_abrirMesa_Click,1205,2,Principal,b_leyendaDescuento_Click,2675,4,Main,JobDone,271,5,Visual Designer,principal.bal,-100,6,Principal,et_selBuscar_FocusChanged,3090,0,Principal,l_selVinos_Click,3072,0 NavigationStack=Principal,b_abrirMesa_Click,1205,2,Principal,b_leyendaDescuento_Click,2760,6,Visual Designer,login.bal,-100,1,Subs,revisaBD,214,1,Main,b_cargaProductos_Click,203,0,Main,JobDone,246,1,Principal,b_renombraVarios_Click,2370,0,Visual Designer,principal.bal,-100,6,Principal,LlenaOrden,2980,1,Principal,actualizaProductos,3070,6
SelectedBuild=0 SelectedBuild=0
VisibleModules=6,5,7 VisibleModules=6,5,7

View File

@@ -1394,7 +1394,7 @@ Private Sub b_pagoCerrar_Click
elEfectivo = d.GetString("totalEfectivo") elEfectivo = d.GetString("totalEfectivo")
Loop Loop
If elEfectivo > "0" Then If elEfectivo > "0" Then
' Log("INSERTAMOS DESCUENTO") Log("INSERTAMOS DESCUENTO")
'Agregamos el efectivo como DESCUENTO en el pedido de la tarjeta. 'Agregamos el efectivo como DESCUENTO en el pedido de la tarjeta.
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_TICKET, PE_FECHA, PE_MESERO, PE_MESA, PE_COSTO_SIN, PE_TIPO, PE_TIPO2, PE_ORIGEN) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ((elEfectivo * -1), (elEfectivo * -1), 1, "DESCUENTO", "DESC01", ticketAnt, Subs.traeFecha, Starter.meseroActual, Starter.mesaActual, elEfectivo, "TARJETA", pagoAnt, $"${Starter.mesaActual}|${sigTicketMT}"$)) Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_TICKET, PE_FECHA, PE_MESERO, PE_MESA, PE_COSTO_SIN, PE_TIPO, PE_TIPO2, PE_ORIGEN) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ((elEfectivo * -1), (elEfectivo * -1), 1, "DESCUENTO", "DESC01", ticketAnt, Subs.traeFecha, Starter.meseroActual, Starter.mesaActual, elEfectivo, "TARJETA", pagoAnt, $"${Starter.mesaActual}|${sigTicketMT}"$))
End If End If
@@ -2679,7 +2679,7 @@ Private Sub b_leyendaDescuento_Click
Private cont As Int = 0 Private cont As Int = 0
For k = 0 To listaTickets.Size - 1 'Por cada ticket y pago de la lista imprimimos un ticket. For k = 0 To listaTickets.Size - 1 'Por cada ticket y pago de la lista imprimimos un ticket.
' LogColor($">>>> Forma de pago : ${listaTickets.Get(k).As(Map).Get("pago")}"$, Colors.Blue) ' LogColor($">>>> Forma de pago : ${listaTickets.Get(k).As(Map).Get("pago")}"$, Colors.Blue)
If listaTickets.Size>= k and listaTickets.Get(k).As(Map).Get("pago") = "EFECTIVO" Or cont > 0 Then 'Solo imprimimos si es el PRIMER ticket de TARJETA. If listaTickets.Size>= k And listaTickets.Get(k).As(Map).Get("pago") = "EFECTIVO" Or cont > 0 Then 'Solo imprimimos si es el PRIMER ticket de TARJETA.
Continue Continue
End If End If
cont = cont + 1 cont = cont + 1
@@ -2766,7 +2766,7 @@ Private Sub b_leyendaDescuento_Click
If logger Then Log($"Comensales: ${Starter.comensalesActuales}${Subs.rellenaHasta(14 - Starter.mesaActual.Length)}${Starter.mesaActual}${CRLF}"$) If logger Then Log($"Comensales: ${Starter.comensalesActuales}${Subs.rellenaHasta(14 - Starter.mesaActual.Length)}${Starter.mesaActual}${CRLF}"$)
If imprimirEste Then Printer1.WriteString(" " & CRLF) If imprimirEste Then Printer1.WriteString(" " & CRLF)
c = Starter.skmt.ExecQuery($"select *, ifnull(PE_DESC, 0) as DESC from PEDIDO join cat_gunaprod on PE_PROID = CAT_GP_ID where PE_MESA = '${Starter.mesaActual}' and PE_TIPO = '${tipoPago}' and PE_TICKET = '${Starter.ticketActual}'"$) c = Starter.skmt.ExecQuery($"select *, ifnull(PE_DESC, 0) as DESC from PEDIDO join cat_gunaprod on PE_PROID = CAT_GP_ID where PE_MESA = '${Starter.mesaActual}' and PE_TIPO = '${tipoPago}' and PE_TICKET = '${Starter.ticketActual}'"$)
' Log($"select * from PEDIDO where PE_MESA = '${Starter.mesaActual}' and PE_TIPO = '${tipoPago}' and PE_TICKET = '${Starter.ticketActual}'"$) ' Log($"select *, ifnull(PE_DESC, 0) as DESC from PEDIDO join cat_gunaprod on PE_PROID = CAT_GP_ID where PE_MESA = '${Starter.mesaActual}' and PE_TIPO = '${tipoPago}' and PE_TICKET = '${Starter.ticketActual}'"$)
' Private elTotalSumado As String = "0" ' Private elTotalSumado As String = "0"
If c.RowCount > 0 Then If c.RowCount > 0 Then
Private elSubTotal As String = 0 Private elSubTotal As String = 0
@@ -2794,6 +2794,14 @@ Private Sub b_leyendaDescuento_Click
If imprimirEste Then Printer1.WriteString($"${c.GetString("PE_CANT")} ${elNombre}${CRLF}${cantXpu}${Subs.alineaDerecha("$"&NumberFormat2(elSubTotal, 1, 2, 2, True), (30 - cantXpu.Length), ".")}${CRLF}"$) If imprimirEste Then Printer1.WriteString($"${c.GetString("PE_CANT")} ${elNombre}${CRLF}${cantXpu}${Subs.alineaDerecha("$"&NumberFormat2(elSubTotal, 1, 2, 2, True), (30 - cantXpu.Length), ".")}${CRLF}"$)
Log($"${c.GetString("PE_CANT")} ${elNombre}${CRLF}${cantXpu}${Subs.alineaDerecha("$"&NumberFormat2(elSubTotal, 1, 2, 2, True), (30 - cantXpu.Length), ".")}${CRLF}"$) Log($"${c.GetString("PE_CANT")} ${elNombre}${CRLF}${cantXpu}${Subs.alineaDerecha("$"&NumberFormat2(elSubTotal, 1, 2, 2, True), (30 - cantXpu.Length), ".")}${CRLF}"$)
' elTotalSumado = elTotalSumado + elSubTotal ' elTotalSumado = elTotalSumado + elSubTotal
If i = c.RowCount - 1 Then
Private desc As ResultSet = Starter.skmt.ExecQuery($"select * from PEDIDO where PE_PRONOMBRE = 'DESCUENTO' and PE_MESA = '${Starter.mesaActual}' and PE_TIPO = '${tipoPago}' and PE_TICKET = '${Starter.ticketActual}'"$)
Do While desc.NextRow
cantXpu = $"1 x ${desc.GetString("PE_COSTOU")}"$
If imprimirEste Then Printer1.WriteString($"1 DESCUENTO${CRLF}${cantXpu}${Subs.alineaDerecha("$"&NumberFormat2(desc.GetString("PE_COSTO_TOT"), 1, 2, 2, True), (30 - cantXpu.Length), ".")}${CRLF}"$)
Log($"1 DESCUENTO${CRLF}${cantXpu}${Subs.alineaDerecha("$"&NumberFormat2(desc.GetString("PE_COSTO_TOT"), 1, 2, 2, True), (30 - cantXpu.Length), ".")}${CRLF}"$)
Loop
End If
Next Next
End If End If
c = Starter.skmt.ExecQuery($"select *, ifnull(PT_PROPINA, "0") as propina, ifnull(PT_ALMACEN, "") as ALM from PEDIDO_TICKET where PT_MESA = '${Starter.mesaActual}' and PT_PAGO = '${tipoPago}' and PT_TICKET = '${Starter.ticketActual}'"$) c = Starter.skmt.ExecQuery($"select *, ifnull(PT_PROPINA, "0") as propina, ifnull(PT_ALMACEN, "") as ALM from PEDIDO_TICKET where PT_MESA = '${Starter.mesaActual}' and PT_PAGO = '${tipoPago}' and PT_TICKET = '${Starter.ticketActual}'"$)
@@ -2976,9 +2984,9 @@ Private Sub clv_orden_VisibleRangeChanged (FirstIndex As Int, LastIndex As Int)
End Sub End Sub
Sub LlenaOrden Sub LlenaOrden
' Log("LlenaOrden") ' Log("LlenaOrden - " & Subs.hayPedido)
clv_orden.Clear clv_orden.Clear
If hayPedido Then 'Si hay pedido obtenemos las cantidades de los productos para agregarlos al CLV. If Subs.hayPedido Then 'Si hay pedido obtenemos las cantidades de los productos para agregarlos al CLV.
Private c As Cursor = Starter.skmt.ExecQuery($"Select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD, CAT_GP_IMG, PE_PROID, PE_CANT, PE_PRONOMBRE, PE_COSTOU from cat_gunaprod join pedido on cat_gp_id = Pe_proid where PE_TICKET = '${Starter.ticketActual}' and PE_MESA = '${Starter.mesaActual}' and PE_TIPO = 'VENTA' and CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$) Private c As Cursor = Starter.skmt.ExecQuery($"Select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD, CAT_GP_IMG, PE_PROID, PE_CANT, PE_PRONOMBRE, PE_COSTOU from cat_gunaprod join pedido on cat_gp_id = Pe_proid where PE_TICKET = '${Starter.ticketActual}' and PE_MESA = '${Starter.mesaActual}' and PE_TIPO = 'VENTA' and CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$)
If c.RowCount > 0 Then If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1 For i = 0 To c.RowCount - 1
@@ -2998,9 +3006,9 @@ Sub actualizaProductos(categoria As String)
Private w As Int = 0 Private w As Int = 0
Private letra As String = "" Private letra As String = ""
If selBuscar = "%" Then If selBuscar = "%" Then
Private c As ResultSet = Starter.skmt.ExecQuery($"select * from cat_gunaprod where cat_gp_tipo like '%${categoria}%' and CAT_GP_NOMBRE not like '%Varios%' and CAT_GP_NOMBRE not like '%Varias%' order by cat_gp_nombre"$) Private c As ResultSet = Starter.skmt.ExecQuery($"select * from cat_gunaprod where cat_gp_tipo like '%${categoria}%' and CAT_GP_NOMBRE not like '%Varios%' and CAT_GP_NOMBRE not like '%Varias%' order by CAT_GP_ORDENAMIENTO, cat_gp_nombre"$)
Else Else
Private c As ResultSet = Starter.skmt.ExecQuery($"select * from cat_gunaprod where cat_gp_tipo like '%${categoria}%' and CAT_GP_NOMBRE like '%${selBuscar}%' order by cat_gp_nombre"$) Private c As ResultSet = Starter.skmt.ExecQuery($"select * from cat_gunaprod where cat_gp_tipo like '%${categoria}%' and CAT_GP_NOMBRE like '%${selBuscar}%' order by CAT_GP_ORDENAMIENTO, cat_gp_nombre"$)
End If End If
panelEnUso = 1 panelEnUso = 1
p_productos1.BringToFront p_productos1.BringToFront
@@ -3008,6 +3016,7 @@ Sub actualizaProductos(categoria As String)
p_productos2.RemoveAllViews p_productos2.RemoveAllViews
p_productos3.RemoveAllViews p_productos3.RemoveAllViews
p_productos4.RemoveAllViews p_productos4.RemoveAllViews
Dim clasifAnt As String = ""
Do While c.NextRow Do While c.NextRow
Private nombre As String = c.getstring("CAT_GP_NOMBRE") Private nombre As String = c.getstring("CAT_GP_NOMBRE")
labelTmp.Initialize("l_prods") labelTmp.Initialize("l_prods")
@@ -3021,11 +3030,8 @@ Sub actualizaProductos(categoria As String)
Else Else
l_prods.SetColorAndBorder(Colors.RGB(220,255,220), 1dip, Colors.Black, 0) l_prods.SetColorAndBorder(Colors.RGB(220,255,220), 1dip, Colors.Black, 0)
End If End If
If selBuscar = "%" And letra <> c.getstring("CAT_GP_NOMBRE").As(String).SubString2(0,1) Then ' Cambiamos el color cuando cambia la letra inicial
l_prods.TextColor = Colors.RGB(220,0,0) 'If 1 = 0 And selBuscar = "%" And letra <> c.getstring("CAT_GP_NOMBRE").As(String).SubString2(0,1) Then ' Cambiamos el color cuando cambia la letra inicial
Else
l_prods.TextColor = Colors.black
End If
letra = c.getstring("CAT_GP_NOMBRE").As(String).SubString2(0,1) letra = c.getstring("CAT_GP_NOMBRE").As(String).SubString2(0,1)
' l_prods.SetColorAndBorder(Colors.White, 1dip, Colors.Black, 0) ' l_prods.SetColorAndBorder(Colors.White, 1dip, Colors.Black, 0)
l_prods.SetTextAlignment("CENTER", "CENTER") l_prods.SetTextAlignment("CENTER", "CENTER")
@@ -3034,6 +3040,7 @@ Sub actualizaProductos(categoria As String)
If nombre.Length > 25 Then l_prods.Text = w & " " & nombre.SubString2(0, 25) If nombre.Length > 25 Then l_prods.Text = w & " " & nombre.SubString2(0, 25)
' {prod=ALCACHOFAS CRUDAS 250g , precio=190, almacen=9997, id=LA92, cant=7, img=Null} ' {prod=ALCACHOFAS CRUDAS 250g , precio=190, almacen=9997, id=LA92, cant=7, img=Null}
l_prods.Tag = CreateMap("prod":nombre, "precio":c.GetString("CAT_GP_PRECIO"), "almacen":"9999", "id":c.GetString("CAT_GP_ID"), "cant":1, "img":Null) l_prods.Tag = CreateMap("prod":nombre, "precio":c.GetString("CAT_GP_PRECIO"), "almacen":"9999", "id":c.GetString("CAT_GP_ID"), "cant":1, "img":Null)
' l_prods.TextColor = Colors.White ' l_prods.TextColor = Colors.White
Private t As Int = w Private t As Int = w
If w > 0 Then top0 = top0 + (l_prods.Height + 1) If w > 0 Then top0 = top0 + (l_prods.Height + 1)
@@ -3041,7 +3048,7 @@ Sub actualizaProductos(categoria As String)
If top0 > p_productos1.Height - l_prods.Height Then If top0 > p_productos1.Height - l_prods.Height Then
left0 = left0 + (l_prods.Width + 1) left0 = left0 + (l_prods.Width + 1)
top0 = 0 top0 = 0
Log("CAMBIO - L:" & left0 & "|LW:" & l_prods.Width & "|W:" & w) ' Log("CAMBIO - L:" & left0 & "|LW:" & l_prods.Width & "|W:" & w)
End If End If
If (left0 + l_prods.Width) > p_productos1.Width Then If (left0 + l_prods.Width) > p_productos1.Width Then
left0 = 0 left0 = 0
@@ -3052,8 +3059,22 @@ Sub actualizaProductos(categoria As String)
else if panelEnUso = 3 Then else if panelEnUso = 3 Then
panelEnUso = 4 panelEnUso = 4
End If End If
Log("NO CABEN - " & w & " USAMOS " & panelEnUso) ' Log("NO CABEN - " & w & " USAMOS " & panelEnUso)
End If End If
If c.GetString("CAT_GP_CLASIF") <> clasifAnt Then
Log(">>> " & c.GetString("CAT_GP_CLASIF"))
' Dim labelHead As Label
' labelHead.Initialize("l_head")
' labelHead.Width = 119dip
' labelHead.Height = 36dip
' labelHead.Text = "ENCABEZADO" 'c.GetString("CAT_GP_CLASIF")
' p_productos1.AddView(labelHead, left0, top0, labelHead.Width, labelHead.Height)
l_prods.TextColor = Colors.RGB(220,0,0)
Else
l_prods.TextColor = Colors.black
End If
clasifAnt = c.GetString("CAT_GP_CLASIF")
Log(l_prods.text)
' Log($"L:${left0}, T:${top0}, PH:${p_productos.Height}"$) ' Log($"L:${left0}, T:${top0}, PH:${p_productos.Height}"$)
If panelEnUso = 1 Then If panelEnUso = 1 Then
p_productos1.AddView(l_prods, left0, top0, l_prods.Width, l_prods.Height) p_productos1.AddView(l_prods, left0, top0, l_prods.Width, l_prods.Height)

View File

@@ -218,6 +218,7 @@ Sub revisaBD 'ignore
agregaColumna("cat_gunaprod", "CAT_PS_DESC", "TEXT") agregaColumna("cat_gunaprod", "CAT_PS_DESC", "TEXT")
agregaColumna("cat_gunaprod", "CAT_GP_FECHA", "TEXT") agregaColumna("cat_gunaprod", "CAT_GP_FECHA", "TEXT")
agregaColumna("cat_gunaprod", "CAT_GP_FECHA_MOD", "TEXT") agregaColumna("cat_gunaprod", "CAT_GP_FECHA_MOD", "TEXT")
agregaColumna("cat_gunaprod", "CAT_GP_ORDENAMIENTO", "NUMERIC")
'Tabla para la bitacora de errores 'Tabla para la bitacora de errores
If Not(errorLog.IsInitialized) Then errorLog.Initialize(Starter.ruta, "errorLog.db", True) If Not(errorLog.IsInitialized) Then errorLog.Initialize(Starter.ruta, "errorLog.db", True)
errorLog.ExecNonQuery("CREATE TABLE IF NOT EXISTS errores(fecha INTEGER, error TEXT)") errorLog.ExecNonQuery("CREATE TABLE IF NOT EXISTS errores(fecha INTEGER, error TEXT)")