public int GenerarVenta(EntitieVenta venta) { int idTransaccion = ControllerTransacciones.Instance.NuevaTransaccion( new EntitieTransaccion( venta.GetIdCuenta(), ControllerTipoTransacciones.Instance.GetTipoTransaccionByNombre("INGRESO").GetIdTipoTransaccion(), venta.GetTotal())); String nombreCliente = ControllerClientes.Instance.GetClienteById(venta.GetIdCliente()).GetNombre(); String nombreCuenta = ControllerCuentas.Instance.GetCuentaById(venta.GetIdCuenta()).GetNombre(); ManagerDatabase.Instance.Execute("INSERT INTO Ventas(ID_Transaccion, ID_Cuenta, ID_Cliente, Cuenta, Cliente, Total, Fecha_Hora) " + "VALUES(" + idTransaccion + ", " + venta.GetIdCuenta() + ", " + venta.GetIdCliente() + ", " + "'" + nombreCuenta + "', '" + nombreCliente + "', " + venta.GetTotal().ToString().Replace(",", ".") + ", " + "'" + venta.GetFechaHora().ToShortDateString() + "')"); int idVenta = Convert.ToInt32(ManagerDatabase.Instance.ExecuteQuery("SELECT MAX(ID_Venta) from Ventas").Rows[0][0]); for (int i = 0; i < venta.GetItems().Count; i++) { venta.GetItems()[i].SetIdVenta(idVenta); } GenerarItems(venta.GetItems()); GenerarFacturaPdf(idVenta); return(idVenta); }
public void GenerarFacturaPdf(int idVenta) { EntitieVenta venta = GetVentaById(idVenta); Image factura = Properties.Resources.Factura; Graphics g = Graphics.FromImage(factura); StringFormat formatter = new StringFormat(); formatter.LineAlignment = StringAlignment.Center; formatter.Alignment = StringAlignment.Near; //Dibuja en las coordenadas exactas los valores del DGV en la factura for (int i = 0; i < venta.GetItems().Count; i++) { formatter.Alignment = StringAlignment.Center; DrawOnGraphics(g, ManagerFormats.Instance.IntToNumber(venta.GetItems()[i].GetCantidad()), new Point(FACTURA_POS_X[0], FACTURA_STARTING_ITEM + (FACTURA_NEW_LINE_HEIGHT * (i + 1))), CANTIDAD_MAX_WIDTH, formatter, false); formatter.Alignment = StringAlignment.Near; DrawOnGraphics(g, (venta.GetItems()[i].GetNombrePez().Length > 35 ? venta.GetItems()[i].GetNombrePez().Substring(0, 35) + "." : venta.GetItems()[i].GetNombrePez()), new Point(FACTURA_POS_X[1], FACTURA_STARTING_ITEM + (FACTURA_NEW_LINE_HEIGHT * (i + 1))), DESCRIPCION_MAX_WIDTH, formatter, false); formatter.Alignment = StringAlignment.Center; DrawOnGraphics(g, ManagerFormats.Instance.DecimalToMoney(venta.GetItems()[i].GetMontoUnitario(), true), new Point(FACTURA_POS_X[2], FACTURA_STARTING_ITEM + (FACTURA_NEW_LINE_HEIGHT * (i + 1))), PRECIO_UNITARIO_MAX_WIDTH, formatter, false); DrawOnGraphics(g, ManagerFormats.Instance.DecimalToMoney(venta.GetItems()[i].GetSubtotal(), true), new Point(FACTURA_POS_X[3], FACTURA_STARTING_ITEM + (FACTURA_NEW_LINE_HEIGHT * (i + 1))), SUBTOTAL_MAX_WIDTH, formatter, false); } formatter.Alignment = StringAlignment.Far; DrawOnGraphics(g, ManagerFormats.Instance.DecimalToMoney(venta.GetTotal(), false), TOTAL_POS, TOTAL_MAX_WIDTH, formatter, true); //Dibuja el nombre del cliente formatter.Alignment = StringAlignment.Near; DrawOnGraphics(g, "Cliente: " + (venta.GetCliente().Length > 29 ? venta.GetCliente().Substring(0, 29) + "." : venta.GetCliente()), CLIENTE_POS, CLIENTE_MAX_WIDTH, formatter, true); //Dibuja la fecha actual formatter.Alignment = StringAlignment.Far; DrawOnGraphics(g, "Fecha: " + DateTime.Today.ToShortDateString(), FECHA_POS, FECHA_MAX_WIDTH, formatter, true); factura.Save(ManagerNames.FACTURAS_PATH + idVenta + ".jpg"); }