5 Pagar
5 Pagar
cs
Nos vamos al código del formulario Pagar.cs y escribmos las siguientes
líneas.
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GatoAbarrotero
{
public partial class frmPagar : Form
{
MySqlConnection conexion = new
MySqlConnection("server=localhost;User
id=admin;password=adminlara;database=puntodeventadb");
DataRow rowVenta;
private DataTable data = new DataTable();
public frmPagar(DataTable data)
{
InitializeComponent();
this.data = data;
}
}
}
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GatoAbarrotero
{
public partial class frmPagar : Form
{
MySqlConnection conexion = new
MySqlConnection("server=localhost;User
id=admin;password=adminlara;database=puntodeventadb");
DataRow rowVenta;
private DataTable data = new DataTable();
public frmPagar(DataTable data)
{
InitializeComponent();
this.data = data;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace GatoAbarrotero
{
class RawPrinterHelper
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public class DOCINFOA
{
[MarshalAs(UnmanagedType.LPStr)]
public string pDocName;
[MarshalAs(UnmanagedType.LPStr)]
public string pOutputFile;
[MarshalAs(UnmanagedType.LPStr)]
public string pDataType;
}
[DllImport("winspool.Drv", EntryPoint = "OpenPrinterA",
SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true,
CallingConvention = CallingConvention.StdCall)]
public static extern bool
OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, out IntPtr
hPrinter, IntPtr pd);
// SendBytesToPrinter()
// When the function is given a printer name and an unmanaged
array
// of bytes, the function sends those bytes to the print queue.
// Returns true on success, false on failure.
public static bool SendBytesToPrinter(string szPrinterName,
IntPtr pBytes, Int32 dwCount)
{
Int32 dwError = 0, dwWritten = 0;
IntPtr hPrinter = new IntPtr(0);
DOCINFOA di = new DOCINFOA();
bool bSuccess = false; // Assume failure unless you
specifically succeed.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Drawing.Printing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace GatoAbarrotero
{
class Ticket
{
string ticket = "";
string parte1, parte2;
string impresora = "POS-58"; // nombre exacto de la impresora
como esta en el panel de control
int max, cort;
public void LineasGuion()
{
ticket = "----------------------------------------\n"; //
agrega lineas separadoras -
RawPrinterHelper.SendStringToPrinter(impresora, ticket); //
imprime linea
}
public void LineasAsterisco()
{
ticket = "****************************************\n"; //
agrega lineas separadoras *
RawPrinterHelper.SendStringToPrinter(impresora, ticket); //
imprime linea
}
public void LineasIgual()
{
ticket = "========================================\n"; //
agrega lineas separadoras =
RawPrinterHelper.SendStringToPrinter(impresora, ticket); //
imprime linea
}
public void LineasTotales()
{
ticket = " -----------\n"; ; //
agrega lineas de total
RawPrinterHelper.SendStringToPrinter(impresora, ticket); //
imprime linea
}
public void EncabezadoVenta()
{
ticket = "Articulo Can P.Unit Importe\n"; //
agrega lineas de encabezados
RawPrinterHelper.SendStringToPrinter(impresora, ticket); //
imprime texto
}
public void TextoIzquierda(string par1)
// agrega texto a la izquierda
{
max = par1.Length;
if (max > 40) // **********
{
cort = max - 40;
parte1 = par1.Remove(40, cort); // si es mayor que
40 caracteres, lo corta
}
else { parte1 = par1; } // **********
ticket = parte1 + "\n";
RawPrinterHelper.SendStringToPrinter(impresora, ticket); //
imprime texto
}
public void TextoDerecha(string par1)
{
ticket = "";
max = par1.Length;
if (max > 40) // **********
{
cort = max - 40;
parte1 = par1.Remove(40, cort); // si es mayor
que 40 caracteres, lo corta
}
else { parte1 = par1; } // **********
max = 40 - par1.Length; // obtiene la
cantidad de espacios para llegar a 40
for (int i = 0; i < max; i++)
{
ticket += " "; // agrega
espacios para alinear a la derecha
}
ticket += parte1 + "\n"; //Agrega el texto
RawPrinterHelper.SendStringToPrinter(impresora, ticket); //
imprime texto
}
public void TextoCentro(string par1)
{
ticket = "";
max = par1.Length;
if (max > 40) // **********
{
cort = max - 40;
parte1 = par1.Remove(40, cort); // si es mayor
que 40 caracteres, lo corta
}
else { parte1 = par1; } // **********
max = (int)(40 - parte1.Length) / 2; // saca la
cantidad de espacios libres y divide entre dos
for (int i = 0; i < max; i++) // **********
{
ticket += " "; // Agrega
espacios antes del texto a centrar
} // **********
ticket += parte1 + "\n";
RawPrinterHelper.SendStringToPrinter(impresora, ticket); //
imprime texto
}
public void TextoExtremos(string par1, string par2)
{
max = par1.Length;
if (max > 18) // **********
{
cort = max - 18;
parte1 = par1.Remove(18, cort); // si par1 es
mayor que 18 lo corta
}
else { parte1 = par1; } // **********
ticket = parte1; // agrega el
primer parametro
max = par2.Length;
if (max > 18) // **********
{
cort = max - 18;
parte2 = par2.Remove(18, cort); // si par2 es
mayor que 18 lo corta
}
else { parte2 = par2; }
max = 40 - (parte1.Length + parte2.Length);
for (int i = 0; i < max; i++) // **********
{
ticket += " "; // Agrega
espacios para poner par2 al final
} // **********
ticket += parte2 + "\n"; // agrega el
segundo parametro al final
RawPrinterHelper.SendStringToPrinter(impresora, ticket); //
imprime texto
}
public void AgregaTotales(string par1, double total)
{
max = par1.Length;
if (max > 25) // **********
{
cort = max - 25;
parte1 = par1.Remove(25, cort); // si es mayor
que 25 lo corta
}
else { parte1 = par1; } // **********
ticket = parte1;
parte2 = total.ToString("c");
max = 40 - (parte1.Length + parte2.Length);
for (int i = 0; i < max; i++) // **********
{
ticket += " "; // Agrega
espacios para poner el valor de moneda al final
} // **********
ticket += parte2 + "\n";
RawPrinterHelper.SendStringToPrinter(impresora, ticket); //
imprime texto
}
public void AgregaArticulo(string par1, int cant, double precio,
double total)
{
if (cant.ToString().Length <= 3 &&
precio.ToString("c").Length <= 10 && total.ToString("c").Length <= 11) //
valida que cant precio y total esten dentro de rango
{
max = par1.Length;
if (max > 16) //
**********
{
cort = max - 16;
parte1 = par1.Remove(16, cort); // corta a
16 la descripcion del articulo
}
else { parte1 = par1; } //
**********
ticket = parte1; // agrega
articulo
max = (3 - cant.ToString().Length) + (16 -
parte1.Length);
for (int i = 0; i < max; i++) //
**********
{
ticket += " "; // Agrega
espacios para poner el valor de cantidad
}
ticket += cant.ToString(); // agrega
cantidad
max = 10 - (precio.ToString("c").Length);
for (int i = 0; i < max; i++) //
**********
{
ticket += " "; // Agrega
espacios
} //
**********
ticket += precio.ToString("c"); // agrega precio
max = 11 - (total.ToString().Length);
for (int i = 0; i < max; i++) //
**********
{
ticket += " "; // Agrega
espacios
} //
**********
ticket += total.ToString("c") + "\n"; // agrega precio
RawPrinterHelper.SendStringToPrinter(impresora, ticket);
// imprime texto
}
else
{
MessageBox.Show("Valores fuera de rango");
RawPrinterHelper.SendStringToPrinter(impresora, "Error,
valor fuera de rango\n"); // imprime texto
}
}
public void CortaTicket()
{
string corte = "\x1B" + "m"; // caracteres
de corte
string avance = "\x1B" + "d" + "\x09"; // avanza 9
renglones
RawPrinterHelper.SendStringToPrinter(impresora, avance); //
avanza
RawPrinterHelper.SendStringToPrinter(impresora, corte); //
corta
}
public void AbreCajon()
{
string cajon0 = "\x1B" + "p" + "\x00" + "\x0F" + "\x96";
// caracteres de apertura cajon 0
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GatoAbarrotero
{
public partial class frmPagar : Form
{
MySqlConnection conexion = new
MySqlConnection("server=localhost;User
id=admin;password=adminlara;database=puntodeventadb");
DataRow rowVenta;
private DataTable data = new DataTable();
public frmPagar(DataTable data)
{
InitializeComponent();
this.data = data;
}
int idVenta;
try
{
conexion.Open();
string insertarQuery = "INSERT INTO ventastotales
(idventa,llaveventa,total,fecha) VALUES(null,?llaveventa,?total,?fecha)";
MySqlCommand cmd = new MySqlCommand(insertarQuery,
conexion);
cmd.Parameters.Add("?llaveventa", MySqlDbType.VarChar,
100).Value = llaveUnica;
cmd.Parameters.Add("?total", MySqlDbType.Decimal,
60).Value = txtTotal.Text;
cmd.Parameters.Add("?fecha", MySqlDbType.DateTime,
60).Value = fecha;
cmd.ExecuteNonQuery();
conexion.Close();
}
catch
{
MessageBox.Show("Inserción fallida");
}
try
{
conexion.Open();
string selectQuery = "SELECT idventa FROM ventastotales
WHERE llaveventa ='" + llaveUnica + "' ";
MySqlCommand cmd = new MySqlCommand(selectQuery,
conexion);
MySqlDataAdapter selecionnar = new MySqlDataAdapter();
selecionnar.SelectCommand = cmd;
DataTable datosVentas = new DataTable();
selecionnar.Fill(datosVentas);
rowVenta = datosVentas.Rows[0];
idVenta = Convert.ToInt32(rowVenta["idventa"]);
//MessageBox.Show(Dt.Rows.Count.ToString());
Ticket1.AgregaTotales("Total",
Convert.ToDouble(txtTotal.Text)); // imprime linea con total
conexion.Close();
}
catch (MySqlException E)
{
MessageBox.Show(E.ToString());
}
cambio = Convert.ToDecimal(txtEfectivo.Text) -
Convert.ToDecimal(txtTotal.Text);
txtCambio.Text = Convert.ToString(cambio);
}
}
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GatoAbarrotero
{
public partial class frmPagar : Form
{
MySqlConnection conexion = new
MySqlConnection("server=localhost;User
id=admin;password=adminlara;database=puntodeventadb");
DataRow rowVenta;
private DataTable data = new DataTable();
public frmPagar(DataTable data)
{
InitializeComponent();
this.data = data;
}
int idVenta;
try
{
conexion.Open();
string insertarQuery = "INSERT INTO ventastotales
(idventa,llaveventa,total,fecha) VALUES(null,?llaveventa,?total,?fecha)";
MySqlCommand cmd = new MySqlCommand(insertarQuery,
conexion);
cmd.Parameters.Add("?llaveventa", MySqlDbType.VarChar,
100).Value = llaveUnica;
cmd.Parameters.Add("?total", MySqlDbType.Decimal,
60).Value = txtTotal.Text;
cmd.Parameters.Add("?fecha", MySqlDbType.DateTime,
60).Value = fecha;
cmd.ExecuteNonQuery();
conexion.Close();
}
catch
{
MessageBox.Show("Inserción fallida");
}
try
{
conexion.Open();
string selectQuery = "SELECT idventa FROM ventastotales
WHERE llaveventa ='" + llaveUnica + "' ";
MySqlCommand cmd = new MySqlCommand(selectQuery,
conexion);
MySqlDataAdapter selecionnar = new MySqlDataAdapter();
selecionnar.SelectCommand = cmd;
DataTable datosVentas = new DataTable();
selecionnar.Fill(datosVentas);
rowVenta = datosVentas.Rows[0];
idVenta = Convert.ToInt32(rowVenta["idventa"]);
//MessageBox.Show(Dt.Rows.Count.ToString());
Ticket1.AgregaTotales("Total",
Convert.ToDouble(txtTotal.Text)); // imprime linea con total
conexion.Close();
}
catch (MySqlException E)
{
MessageBox.Show(E.ToString());
}
cambio = Convert.ToDecimal(txtEfectivo.Text) -
Convert.ToDecimal(txtTotal.Text);
txtCambio.Text = Convert.ToString(cambio);
}
}
namespace GatoAbarrotero
{
public partial class frmMenu : Form
{
public frmMenu()
{
InitializeComponent();
}
}
}
Probando
Corremos la aplicación:
Presionamos pagar
Nos pagan 500 pesos en efectivo y presionamos Cobrar