/// <summary> /// Crea las instancias de trabajo por cada fila de la nota, y registra la nota en la BD /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Crear_Nota(object sender, RoutedEventArgs e) { bool valido = true; int indiceConcepto; Concepto concepto = null; ; Producto producto = null; ; Trabajo trabajo = null; Anticipo anticipo = null; Nota nota = null; trabajos.Clear(); //Si se acaba de cerrar la ventana del formulario, ya no debe registrarse una nota if (!regreso) { //La fecha de entrega debe ser válida if (fechaEntrega.Text.Equals("")) { valido = false; fechaEntrega.Text = "*"; MessageBox.Show("Ingrese una fecha de entrega para continuar ....", "La Modistería | ERROR"); } //Debe haberse elegido un nombre if (string.IsNullOrEmpty(notaNombreCliente.Text)) { valido = false; MessageBox.Show("No se seleccionó un cliente para esta nota. Elija uno del buscador o registre uno nuevo para continuar ....", "La Modistería | ERROR"); } //Si el anticipo se quedó vacío, se pone un cero if (string.IsNullOrEmpty(txtAnticipo.Text)) txtAnticipo.Text = "0"; //Si es válido, se prosigue con la captura de la nota if (valido) { //Creación de una instancia de trabajo por cada fila válida for (int i = 0; i < 6; i++) { //Si fue utilizada, es decir no está vacío el importe if (!importesBox[i].Text.Equals("")) { //Conversión del importe a flotante float importeFila = Convert.ToSingle(importesBox[i].Text, CultureInfo.InvariantCulture); //Conversión del precio unitario a flotante float pu = Convert.ToSingle(PUBox[i].Text, CultureInfo.InvariantCulture); //Obtención del tipo de trabajo string tipoTrabajo = tipoTrabajoBoxes[i].Text; switch (tipoTrabajo) { case "C": //1.- Conseguir el índice del concepto en el combo box indiceConcepto = comboBoxes[i].SelectedIndex; //2.- Conseguir la compostura concepto = composturas[indiceConcepto]; //3.- Crear la instancia trabajo = new Trabajo { cantidad = Int32.Parse(cantidadesBox[i].Text), descripcion = descripcionesBox[i].Text, importe = importeFila, concepto = concepto, precioUnitario = pu }; break; case "H": //1.- Conseguir el índice del concepto en el combo box indiceConcepto = comboBoxes[i].SelectedIndex; //2.- Conseguir la hechura concepto = hechuras[indiceConcepto]; //3.- Crear la instancia trabajo = new Trabajo { cantidad = Int32.Parse(cantidadesBox[i].Text), descripcion = descripcionesBox[i].Text, importe = importeFila, concepto = concepto, precioUnitario = pu }; break; case "P": //1.- Conseguir el índice del concepto en el combo box indiceConcepto = comboBoxes[i].SelectedIndex; //2.- Conseguir la compostura producto = productos[indiceConcepto]; //3.- Crear la instancia trabajo = new Trabajo { cantidad = Int32.Parse(cantidadesBox[i].Text), descripcion = descripcionesBox[i].Text, importe = importeFila, producto = producto, precioUnitario = pu }; break; } //Registro del trabajo en una lista de trabajos trabajos.Add(trabajo); } //Si está vacío el importe pero no la descripción, se debe concatenar a la //descripción del trabajo anterior else if (!descripcionesBox[i].Text.Equals("")) { Console.WriteLine("Se tiene una descripción huérfana ...."); Console.WriteLine(trabajos.ElementAt(trabajos.Count - 1).descripcion); //Se debe recuperar el trabajo anterior trabajos.ElementAt(trabajos.Count - 1).descripcion += " " + descripcionesBox[i].Text; Console.WriteLine(trabajos.ElementAt(trabajos.Count - 1).descripcion); } } //Conversión del saldo float saldo = Convert.ToSingle(txtSaldo.Text, CultureInfo.InvariantCulture); //Conversión del total float totalF = Convert.ToSingle(txtTotal.Text, CultureInfo.InvariantCulture); //Buscar el id del empleado quien hizo la nota en la lista de empleados int idEmpleadaRealizaNota = 0; try { var emplRealizaNota = empleadas.Where(item => item.nombre.Equals(listEmpleados.SelectedItem.ToString())); idEmpleadaRealizaNota = ((Empleada)(emplRealizaNota.ElementAt(0))).idEmpleado; } catch (Exception ex) { Console.WriteLine(ex); } //Creación de la nota nota = new Nota { folioNota = Int32.Parse(txtFolio.Text), fechaCreacion = DateTime.Today.ToString("d"), fechaEntrega = fechaEntrega.Text, estadoNota = "Pendiente", descripcionEstado = "", tipoPago = txtFormaPago.SelectionBoxItem.ToString(), total = totalF, saldo = saldo, creadaPor = idEmpleadaRealizaNota, hechaPor = 0, idCliente = clienteActual }; //Volcar los trabajos a la nota foreach (Trabajo item in trabajos) nota.addTrabajo(item); //Volcar los anticipos a la nota if (!txtAnticipo.Equals("0")) { anticipo = new Anticipo { fecha = fechaNota.Text, monto = Convert.ToSingle(txtAnticipo.Text, CultureInfo.InvariantCulture) }; nota.addAnticipo(anticipo); nota.anticipo = anticipo.monto; Console.WriteLine(anticipo.fecha); Console.WriteLine(anticipo.monto); } //Mostrar la nota para imprimirla TicketForm ticket; //Si se eligió que se va a imprimir la nota, se manda true como segundo parámetro if (checkCorreo.IsChecked == true) ticket = new TicketForm(nota, 4); else ticket = new TicketForm(nota, 3); ticket.Closing += ticket_Closing; ticket.Show(); } } }
/// <summary> /// Agrega un trabajo a la lista de trabajos /// </summary> /// <param name="t"></param> protected internal virtual void addTrabajo(Trabajo t) { t.idNota = this; listaTrabajos.Add(t); }