248 lines
8.3 KiB
C#
248 lines
8.3 KiB
C#
using compabetov2.database;
|
|
using compabetov2.database.modelos;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Drawing.Drawing2D;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using System.Windows.Forms.VisualStyles;
|
|
|
|
namespace compabetov2
|
|
{
|
|
public partial class vender : Form
|
|
|
|
|
|
{
|
|
|
|
private int cantidad = 0;
|
|
private bool masBtnPresionado = false;
|
|
private bool menosBtnPresionado = false;
|
|
private List<Producto> productos;
|
|
private List<TableLayoutPanel> cartas = new List<TableLayoutPanel>();
|
|
private decimal total = 0;
|
|
|
|
|
|
|
|
public vender()
|
|
{
|
|
InitializeComponent();
|
|
getData();
|
|
llenarLayout();
|
|
}
|
|
|
|
private void llenarLayout()
|
|
{
|
|
foreach (Producto producto in productos)
|
|
{
|
|
|
|
TableLayoutPanel carta = new TableLayoutPanel();
|
|
carta.ColumnCount = 1;
|
|
carta.RowCount = 2;
|
|
|
|
carta.RowStyles.Add(new RowStyle(SizeType.Percent, 80F));
|
|
carta.RowStyles.Add(new RowStyle(SizeType.Percent, 20F));
|
|
|
|
carta.Width = 200;
|
|
carta.Height = 300;
|
|
|
|
PictureBox pic = new PictureBox();
|
|
pic.Dock = DockStyle.Fill;
|
|
pic.SizeMode = PictureBoxSizeMode.Zoom;
|
|
pic.Image = Properties.Resources.Modelo;
|
|
pic.BackgroundImageLayout = ImageLayout.Stretch;
|
|
pic.Tag = producto.idProducto;
|
|
|
|
Label id = new Label();
|
|
id.Text = producto.idProducto.ToString();
|
|
id.BackColor = Color.FromArgb(82, 82, 82);
|
|
id.ForeColor = Color.White;
|
|
id.Width = 20;
|
|
id.Font = new Font(id.Font, FontStyle.Bold);
|
|
id.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
|
pic.Controls.Add(id);
|
|
|
|
Label precio = new Label();
|
|
precio.Text = "$" + producto.precion.ToString() + " - " + producto.nombre;
|
|
precio.BackColor = Color.FromArgb(82, 82, 82);
|
|
precio.ForeColor = Color.White;
|
|
precio.Width = 40;
|
|
precio.Font = new Font(id.Font, FontStyle.Bold);
|
|
precio.Dock = DockStyle.Bottom;
|
|
pic.Controls.Add(precio);
|
|
|
|
TableLayoutPanel HUD = new TableLayoutPanel();
|
|
HUD.ColumnCount = 3;
|
|
HUD.RowCount = 1;
|
|
HUD.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33F));
|
|
HUD.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33F));
|
|
HUD.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33F));
|
|
|
|
Label contador = new Label();
|
|
contador.Text = "0";
|
|
contador.Dock = DockStyle.Fill;
|
|
contador.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
|
contador.Font = new Font(contador.Font.FontFamily, 30);
|
|
|
|
Button btnMenos = new Button();
|
|
btnMenos.Text = "-";
|
|
btnMenos.Width = 25;
|
|
btnMenos.Height = 25;
|
|
btnMenos.Font = new Font(btnMenos.Font.FontFamily, 30);
|
|
btnMenos.ForeColor = Color.White;
|
|
btnMenos.Dock = DockStyle.Fill;
|
|
btnMenos.FlatStyle = FlatStyle.Flat;
|
|
btnMenos.FlatAppearance.BorderSize = 0;
|
|
btnMenos.BackColor = Color.FromArgb(33, 90, 255);
|
|
btnMenos.Click += new EventHandler(delegate (object sender, EventArgs e)
|
|
{
|
|
int numeroContador = int.Parse(contador.Text.ToString());
|
|
|
|
// Validar que el contador no sea 0 antes de restar
|
|
if (numeroContador > 0)
|
|
{
|
|
contador.Text = (numeroContador - 1).ToString();
|
|
total -= producto.precion;
|
|
}
|
|
else
|
|
{
|
|
// Mostrar mensaje de advertencia
|
|
MessageBox.Show("No puedes vender cosas negativas", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
}
|
|
});
|
|
|
|
|
|
|
|
|
|
Button btnMas = new Button();
|
|
btnMas.Text = "+";
|
|
btnMas.Width = 25;
|
|
btnMas.Height = 25;
|
|
btnMas.Dock = DockStyle.Fill;
|
|
btnMas.Font = new Font(btnMas.Font.FontFamily, 30);
|
|
btnMas.ForeColor = Color.White;
|
|
btnMas.BackColor = Color.FromArgb(33, 90, 255);
|
|
btnMas.FlatStyle = FlatStyle.Flat;
|
|
btnMas.FlatAppearance.BorderSize = 0;
|
|
btnMas.Click += new EventHandler(delegate (object sender, EventArgs e)
|
|
{
|
|
int numeroContador = int.Parse(contador.Text.ToString());
|
|
contador.Text = (numeroContador + 1).ToString();
|
|
total += producto.precion;
|
|
|
|
|
|
|
|
|
|
// Obtener información del Label id y precio
|
|
int idProducto = int.Parse(id.Text);
|
|
decimal precioProducto;
|
|
if (decimal.TryParse(precio.Text, NumberStyles.Currency, CultureInfo.CurrentCulture, out precioProducto))
|
|
{
|
|
// Generar ticket y agregarlo al flowLayoutPanel2
|
|
GenerarTicket(idProducto, producto.nombre, precioProducto, int.Parse(contador.Text), total);
|
|
}
|
|
else
|
|
{
|
|
// Manejar el caso en el que la conversión no sea exitosa
|
|
MessageBox.Show("Formato de precio no válido.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
|
|
// Generar ticket y agregarlo al flowLayoutPanel2
|
|
GenerarTicket(idProducto, producto.nombre, precioProducto, int.Parse(contador.Text), total);
|
|
|
|
// ... (código existente)
|
|
});
|
|
|
|
HUD.Controls.Add(btnMenos);
|
|
HUD.Controls.Add(contador);
|
|
HUD.Controls.Add(btnMas);
|
|
|
|
carta.Controls.Add(pic, 0, 0);
|
|
carta.Controls.Add(HUD, 0, 1);
|
|
cartas.Add(carta);
|
|
flowLayoutPanel3.Controls.Add(carta);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
private void GenerarTicket(int idProducto, string nombreProducto, decimal precio, int cantidad, decimal total)
|
|
{
|
|
// Crear un nuevo control (puede ser un Label, Panel, etc.) para representar el ticket
|
|
Label ticketLabel = new Label();
|
|
ticketLabel.Text = $"ID: {idProducto} | Producto: {nombreProducto} | Precio: ${precio} | Cantidad: {cantidad} | Total: ${total}";
|
|
ticketLabel.BackColor = Color.LightGray; // Puedes ajustar el color de fondo según tu diseño
|
|
ticketLabel.AutoSize = true;
|
|
|
|
// Agregar el ticket al flowLayoutPanel2
|
|
flowLayoutPanel2.Controls.Add(ticketLabel);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void getData()
|
|
{
|
|
this.productos = service.conseguirProductos();
|
|
}
|
|
|
|
private void vender_Load(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void lblhora_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void lblfecha_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void horafecha_Tick(object sender, EventArgs e)
|
|
{
|
|
lblhora.Text = DateTime.Now.ToString("h:mm:ss");
|
|
lblfecha.Text = DateTime.Now.ToLongDateString();
|
|
}
|
|
|
|
private void cervezasgb_Enter(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void flowLayoutPanel3_Paint(object sender, PaintEventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
MenuPrincipal menuPrincipal = new MenuPrincipal();
|
|
menuPrincipal.Show();
|
|
this.Dispose(true);
|
|
}
|
|
|
|
private void flowLayoutPanel2_Paint(object sender, PaintEventArgs e)
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|