/// <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();
                }
            }
        }
Esempio n. 2
0
 /// <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);
 }