Soy nuevo programando en gambas, estoy intentando hacer una aplicación de facturación para Linux basada en gambas.
Actualmente estoy con el Formulario de Tickets, en el que tengo un ColumView que recibe los datos de TextBox y ValueBox.
Pero al recuperar las filas del Columview, me recupera los números sin decimales, como puedo hacer para recuperar los datos con decimales?
Codigo:
' gambas class file
Rresult AS Result
impuesto AS Result
pago AS Result
linea AS Integer = 0
lineaticket AS Integer = 0
'TabStrip1.Text = "Ficha"
PUBLIC SUB Form_Open()
ticket()
impuesto = FMain.hcon.Exec("SELECT * FROM impuestos ORDER BY codimpuesto")
WHILE impuesto.Available
Cboimpuesto.Add(impuesto!valor)
impuesto.MoveNext
WEND
pago = FMain.hcon.Exec("SELECT * FROM formapago ORDER BY codformapago")
WHILE pago.Available
Cbopago.Add(pago!nombrefp)
pago.MoveNext
WEND
END
PUBLIC SUB ToolButton2_Click()
' Ffecha.Preguntarhastafecha
Ffecha.ShowModal
FTicket.TxtCodCliente.SetFocus
' FTicket2.Refresh
END
PUBLIC SUB ToolButton1_Click()
FSelcliente.Show
FTicket.TxtCodArtVenta.SetFocus
END
PUBLIC SUB TxtCodArtVenta_KeyPress()
IF Key.Code = Key.F3 THEN FSelarticulo.Show
END
PUBLIC SUB ticket()
LineasTicket.Clear
LineasTicket.Columns.count = 6
LineasTicket.Columns[0].Width = 65
LineasTicket.Columns[1].Width = 450
LineasTicket.Columns[2].Width = 65
LineasTicket.Columns[3].Width = 65
LineasTicket.Columns[4].Width = 65
LineasTicket.Columns[5].Width = 100
' LineasTicket.Columns[0].Alignment
LineasTicket.Columns[0].Text = "Codigo"
LineasTicket.Columns[1].Text = "Descripcion"
LineasTicket.Columns[2].Text = "Imp. %"
LineasTicket.Columns[3].Text = "Unidades"
LineasTicket.Columns[4].Text = "PVP"
LineasTicket.Columns[5].Text = "Total"
END
PUBLIC SUB ToolButton3_Click() 'Añadir articulos al ColumView LineasTicket
LineasTicket.Add(linea, linea)
LineasTicket.Item[0] = TxtCodArtVenta.Text
LineasTicket.Item[1] = TxtDesVenta.Text
LineasTicket.Item[2] = Val(Cboimpuesto.Current.Text)
LineasTicket.Item[3] = CFloat(TxtUnidVenta.Value)
LineasTicket.Item[4] = CFloat(TxtPVPVenta.Value)
LineasTicket.Item[5] = LineasTicket.Item[3] * LineasTicket.Item[4]
Txtimpuesto.Text = Round(CFloat(Txtimpuesto.Text) + LineasTicket.Item[5] * (LineasTicket.Item[2] / 100), -2)
TxtSubTotal.Text = CFloat(TxtSubTotal.Text) + LineasTicket.Item[5]
TxtTotalEuros.Text = CFloat(TxtSubTotal.Text) + CFloat(Txtimpuesto.Text)
LineasTicket.MoveNext
linea = linea + 1
TxtCodArtVenta.Text = ""
TxtDesVenta.Text = ""
Cboimpuesto.Index = 0
TxtUnidVenta.Clear
TxtPVPVenta.Clear
END
PUBLIC SUB TxtEntregado_LostFocus()
IF NOT IsFloat(TxtEntregado.Value) THEN TxtEntregado.Value = Reemplazar(TxtEntregado.Value)
IF TxtEntregado.Value <> "" THEN TxtDevolucion.Text = CFloat(TxtEntregado.Value) - CFloat(TxtTotalEuros.Text)
END
PUBLIC FUNCTION Reemplazar(s AS String) AS Float
DIM i AS Float
IF s LIKE ("*,*") 'Si tiene coma la reemplaza
s = Replace(s, ",", ".")
END IF
i = CFloat(s)
RETURN i
END
PUBLIC FUNCTION Reemplazarp(s AS String) AS Integer
DIM i AS Integer
IF s LIKE ("*.*") 'Si tiene punto lo reemplaza con comas
s = Replace(s, ".", ",")
END IF
i = Val(s)
RETURN i
END
PUBLIC SUB LineasTicket_Click()
TxtCodArtVenta.Text = LineasTicket.Current[0]
TxtDesVenta.Text = LineasTicket.Current[1]
Cboimpuesto.Index = CFloat(LineasTicket.Current[2])
' TxtUnidVenta.
TxtUnidVenta.Value = Round(CFloat(LineasTicket.Current[3]), -2)
TxtPVPVenta.Value = Round(CFloat(Reemplazarp(LineasTicket.Current[4])), -2)
lineaticket = 1
END
PUBLIC SUB BtnBorrarlinea_Click()
TxtCodArtVenta.Text = ""
TxtDesVenta.Text = ""
Cboimpuesto.Index = 0
TxtUnidVenta.Value = 0
TxtPVPVenta.Value = 0
IF lineaticket = 1 THEN
LineasTicket.Remove(LineasTicket.Current.Key)
LineasTicket.Refresh
ENDIF
TxtCodArtVenta.SetFocus
END
Rresult AS Result
impuesto AS Result
pago AS Result
linea AS Integer = 0
lineaticket AS Integer = 0
'TabStrip1.Text = "Ficha"
PUBLIC SUB Form_Open()
ticket()
impuesto = FMain.hcon.Exec("SELECT * FROM impuestos ORDER BY codimpuesto")
WHILE impuesto.Available
Cboimpuesto.Add(impuesto!valor)
impuesto.MoveNext
WEND
pago = FMain.hcon.Exec("SELECT * FROM formapago ORDER BY codformapago")
WHILE pago.Available
Cbopago.Add(pago!nombrefp)
pago.MoveNext
WEND
END
PUBLIC SUB ToolButton2_Click()
' Ffecha.Preguntarhastafecha
Ffecha.ShowModal
FTicket.TxtCodCliente.SetFocus
' FTicket2.Refresh
END
PUBLIC SUB ToolButton1_Click()
FSelcliente.Show
FTicket.TxtCodArtVenta.SetFocus
END
PUBLIC SUB TxtCodArtVenta_KeyPress()
IF Key.Code = Key.F3 THEN FSelarticulo.Show
END
PUBLIC SUB ticket()
LineasTicket.Clear
LineasTicket.Columns.count = 6
LineasTicket.Columns[0].Width = 65
LineasTicket.Columns[1].Width = 450
LineasTicket.Columns[2].Width = 65
LineasTicket.Columns[3].Width = 65
LineasTicket.Columns[4].Width = 65
LineasTicket.Columns[5].Width = 100
' LineasTicket.Columns[0].Alignment
LineasTicket.Columns[0].Text = "Codigo"
LineasTicket.Columns[1].Text = "Descripcion"
LineasTicket.Columns[2].Text = "Imp. %"
LineasTicket.Columns[3].Text = "Unidades"
LineasTicket.Columns[4].Text = "PVP"
LineasTicket.Columns[5].Text = "Total"
END
PUBLIC SUB ToolButton3_Click() 'Añadir articulos al ColumView LineasTicket
LineasTicket.Add(linea, linea)
LineasTicket.Item[0] = TxtCodArtVenta.Text
LineasTicket.Item[1] = TxtDesVenta.Text
LineasTicket.Item[2] = Val(Cboimpuesto.Current.Text)
LineasTicket.Item[3] = CFloat(TxtUnidVenta.Value)
LineasTicket.Item[4] = CFloat(TxtPVPVenta.Value)
LineasTicket.Item[5] = LineasTicket.Item[3] * LineasTicket.Item[4]
Txtimpuesto.Text = Round(CFloat(Txtimpuesto.Text) + LineasTicket.Item[5] * (LineasTicket.Item[2] / 100), -2)
TxtSubTotal.Text = CFloat(TxtSubTotal.Text) + LineasTicket.Item[5]
TxtTotalEuros.Text = CFloat(TxtSubTotal.Text) + CFloat(Txtimpuesto.Text)
LineasTicket.MoveNext
linea = linea + 1
TxtCodArtVenta.Text = ""
TxtDesVenta.Text = ""
Cboimpuesto.Index = 0
TxtUnidVenta.Clear
TxtPVPVenta.Clear
END
PUBLIC SUB TxtEntregado_LostFocus()
IF NOT IsFloat(TxtEntregado.Value) THEN TxtEntregado.Value = Reemplazar(TxtEntregado.Value)
IF TxtEntregado.Value <> "" THEN TxtDevolucion.Text = CFloat(TxtEntregado.Value) - CFloat(TxtTotalEuros.Text)
END
PUBLIC FUNCTION Reemplazar(s AS String) AS Float
DIM i AS Float
IF s LIKE ("*,*") 'Si tiene coma la reemplaza
s = Replace(s, ",", ".")
END IF
i = CFloat(s)
RETURN i
END
PUBLIC FUNCTION Reemplazarp(s AS String) AS Integer
DIM i AS Integer
IF s LIKE ("*.*") 'Si tiene punto lo reemplaza con comas
s = Replace(s, ".", ",")
END IF
i = Val(s)
RETURN i
END
PUBLIC SUB LineasTicket_Click()
TxtCodArtVenta.Text = LineasTicket.Current[0]
TxtDesVenta.Text = LineasTicket.Current[1]
Cboimpuesto.Index = CFloat(LineasTicket.Current[2])
' TxtUnidVenta.
TxtUnidVenta.Value = Round(CFloat(LineasTicket.Current[3]), -2)
TxtPVPVenta.Value = Round(CFloat(Reemplazarp(LineasTicket.Current[4])), -2)
lineaticket = 1
END
PUBLIC SUB BtnBorrarlinea_Click()
TxtCodArtVenta.Text = ""
TxtDesVenta.Text = ""
Cboimpuesto.Index = 0
TxtUnidVenta.Value = 0
TxtPVPVenta.Value = 0
IF lineaticket = 1 THEN
LineasTicket.Remove(LineasTicket.Current.Key)
LineasTicket.Refresh
ENDIF
TxtCodArtVenta.SetFocus
END