Exemplo n.º 1
0
        private void Marcaciones(int indice)
        {
            //esta función se activa cuando se marca un albarán

            string VenAlb = dataGridView_Albaranes.Rows[indice].Cells[1].Value.ToString();
            string Anyo   = dataGridView_Albaranes.Rows[indice].Cells[3].Value.ToString();
            //string VenFec = dataGridView_Albaranes.Rows[indice].Cells[4].Value.ToString();

            //string VenBru = dataGridView_Albaranes.Rows[indice].Cells[6].Value.ToString();
            //string VenIva = dataGridView_Albaranes.Rows[indice].Cells[7].Value.ToString();
            //string VenRec = dataGridView_Albaranes.Rows[indice].Cells[8].Value.ToString();


            //comprobar si estaba marcada
            bool marcada = false;

            if (dataGridView_Albaranes.Rows[indice].Cells[0].Value.ToString().ToLower() == "true")
            {
                marcada = true;
            }

            if (marcada)
            {
                //si esta marcada se va a desmarcar
                dataGridView_Albaranes.Rows[indice].Cells[0].Value = false;

                for (int y = 0; y < 2; y++)
                {
                    for (int x = 0; x < dataGridView_Facturado.Rows.Count; x++)
                    {
                        int row = 0; bool encontrada = false;

                        if (dataGridView_Facturado.Rows[x].Cells[4].Value.ToString() == VenAlb)
                        {
                            encontrada = true;
                            row        = x;
                        }

                        if (encontrada == true)
                        {
                            dataGridView_Facturado.Rows.Remove(dataGridView_Facturado.Rows[row]);
                            Renumerar_Grid();
                            x--;
                        }
                    }
                }
            }
            else
            {
                dataGridView_Albaranes.Rows[indice].Cells[0].Value = true;
                int contador = dataGridView_Facturado.Rows.Count + 1;

                //lectura de lineas de albarán
                ArrayList Lineas = Funciones.Lineas_Albaran(VenAlb, Anyo, CnO);

                for (int x = 0; x < Lineas.Count; x++)
                {
                    detalle_linea_albaran linea_albaran = (detalle_linea_albaran)Lineas[x];

                    clase_linea_factura linea_factura = new clase_linea_factura();

                    linea_factura.Albaran      = VenAlb;
                    linea_factura.Anyo         = textBox_Anyo.Text;
                    linea_factura.AnyoAlb      = Anyo;
                    linea_factura.ArtCod       = linea_albaran.ArtCod;
                    linea_factura.Cajas        = linea_albaran.VelBul;
                    linea_factura.Factura      = "";
                    linea_factura.Importe      = Funciones.Formatea(linea_albaran.VelImp);
                    linea_factura.Kilos        = linea_albaran.VelKil;
                    linea_factura.Linea        = contador.ToString();
                    linea_factura.LineaAlbaran = linea_albaran.VelLin;
                    linea_factura.PartAnyo     = linea_albaran.PartAnyo;
                    linea_factura.Partida      = linea_albaran.Partida;
                    linea_factura.Precio       = linea_albaran.VelPre;
                    linea_factura.Serie        = comboBox_Serie.Text;
                    linea_factura.Traza        = linea_albaran.VelTrz;
                    linea_factura.PartAlm      = linea_albaran.PartAlm;

                    //se ha creado una línea de factura a partir de las lineas del albarán y ahora se agrega por binding

                    dataSource2.Add(linea_factura);

                    contador++;
                }
            }
        }
        private void button_Grabar_Click(object sender, EventArgs e)
        {
            //grabar las líneas
            ArrayList Lista_Albaranes = new ArrayList();

            for (int x = 0; x < dataGridView_Albaranes.Rows.Count; x++)
            {
                if (dataGridView_Albaranes.Rows[x].Cells[0].FormattedValue.ToString().ToLower() == "true")
                {
                    dato_albaran dato = new dato_albaran();

                    dato.VenAlb = dataGridView_Albaranes.Rows[x].Cells[1].Value.ToString();
                    dato.Anyo   = dataGridView_Albaranes.Rows[x].Cells[3].Value.ToString();

                    Lista_Albaranes.Add(dato);
                }
            }

            //comprobar si la factura tiene líneas
            if (Lista_Albaranes.Count > 0)
            {
                //si tiene se graban los cambios
                //pero tiene que hacerse con un UPDATE en vez de un INSERT

                //cabecera

                string observaciones = textBox_Observaciones.Text.Replace("'", "''"); if (observaciones.Length > 99)
                {
                    observaciones = observaciones.Substring(0, 99);
                }
                string textopie = textBox_TextoPie.Text.Replace("'", "''"); if (textopie.Length > 199)
                {
                    textopie = textopie.Substring(0, 199);
                }
                string textocabe = textBox_TextoCabecera.Text.Replace("'", "''"); if (textocabe.Length > 199)
                {
                    textocabe = textocabe.Substring(0, 199);
                }

                string update_cabecera = "UPDATE FACTV_CABE SET DetCod=" + textBox_DetCod.Text + ", BI1=" + textBox_BI.Text.Replace(",", ".") + ", IVA1=" + textBox_IVA.Text.Replace(",", ".") + ", RE1=" + textBox_Recargo.Text.Replace(",", ".") + ", ImpteFactura=" + textBox_Importe.Text.Replace(",", ".") + ", ImptePendiente=" + textBox_Importe.Text.Replace(",", ".") + ", ";
                update_cabecera += " Observaciones='" + observaciones + "', TextoPie='" + textopie + "', TextoCabe='" + textocabe + "' ";
                update_cabecera += " WHERE Factura=" + textBox_Factura.Text + " AND Anyo=" + textBox_Anyo.Text + " AND Serie='" + textBox_Serie.Text + "' ";

                int res_cabecera = EjecutaNonQuery(update_cabecera);

                Funciones.Escribe_LOG("Se ha modificado una factura. Se incluye el update a continuación.", "MODIFICAR", CnO);
                Funciones.Escribe_LOG(update_cabecera, "MODIFICAR", CnO);

                //hay que borrar las líneas anteriores y escribir las nuevas

                string delete_lineas = "DELETE FACTV_LINEAS WHERE Factura=" + textBox_Factura.Text + " AND Anyo=" + textBox_Anyo.Text + " AND Serie='" + textBox_Serie.Text + "' ";
                int    res_delete    = EjecutaNonQuery(delete_lineas);

                //hay que desmarcar también los albaranes que estaban marcados

                string desmarca_albaranes = "UPDATE VENALB_CABE SET VenNfp = NULL, AnyoFra = NULL, SerieFra = NULL WHERE VenNfp=" + textBox_Factura.Text + " AND AnyoFra=" + textBox_Anyo.Text + " AND SerieFra='" + textBox_Serie.Text + "' ";
                int    res_desmarcar      = EjecutaNonQuery(desmarca_albaranes);

                //y marcar los nuevos

                Funciones.Marcar_Ventas(textBox_Factura.Text, textBox_Anyo.Text, textBox_Serie.Text, Lista_Albaranes, CnO);

                //y ahora escribimos las nuevas, código basado en Funciones.Facturar

                ArrayList Lista_Lineas_Factura = new ArrayList();
                int       contador             = 1;

                for (int y = 0; y < Lista_Albaranes.Count; y++)
                {
                    dato_albaran albaran = (dato_albaran)Lista_Albaranes[y];

                    ArrayList Lista_Lineas_Albaran = Funciones.Lineas_Albaran(albaran.VenAlb, albaran.Anyo, CnO);

                    if (Lista_Lineas_Albaran != null)
                    {
                        for (int x = 0; x < Lista_Lineas_Albaran.Count; x++)
                        {
                            detalle_linea_albaran linea_albaran = (detalle_linea_albaran)Lista_Lineas_Albaran[x];

                            clase_linea_factura linea_factura = new clase_linea_factura();

                            linea_factura.Albaran      = albaran.VenAlb;
                            linea_factura.Anyo         = textBox_Anyo.Text;
                            linea_factura.AnyoAlb      = albaran.Anyo;
                            linea_factura.ArtCod       = linea_albaran.ArtCod;
                            linea_factura.Cajas        = linea_albaran.VelBul;
                            linea_factura.Factura      = textBox_Factura.Text;
                            linea_factura.Importe      = linea_albaran.VelImp;
                            linea_factura.Kilos        = linea_albaran.VelKil;
                            linea_factura.Linea        = contador.ToString();
                            linea_factura.LineaAlbaran = linea_albaran.VelLin;
                            linea_factura.PartAnyo     = linea_albaran.PartAnyo;
                            linea_factura.Partida      = linea_albaran.Partida;
                            linea_factura.Precio       = linea_albaran.VelPre;
                            linea_factura.Serie        = textBox_Serie.Text;
                            linea_factura.Traza        = linea_albaran.VelTrz;
                            linea_factura.PartAlm      = linea_albaran.PartAlm;

                            Lista_Lineas_Factura.Add(linea_factura);

                            contador++;
                        }
                    }
                }

                for (int x = 0; x < Lista_Lineas_Factura.Count; x++)
                {
                    clase_linea_factura linea = (clase_linea_factura)Lista_Lineas_Factura[x];

                    string insert_linea = "INSERT FACTV_LINEAS(Factura, Anyo, Serie, LinF, VelAlb, AnyoAlb, VelLin, ArtCod, VelBul, VelKil, VelPre, VelTrz, VelImp, Partida, PartAnyo, PartAlm) ";
                    insert_linea += " VALUES (" + textBox_Factura.Text + ", " + textBox_Anyo.Text + ", '" + textBox_Serie.Text + "', " + linea.Linea + ", " + linea.Albaran + ", " + linea.AnyoAlb + ", " + linea.LineaAlbaran + ", " + linea.ArtCod + ", " + linea.Cajas.Replace(",", ".") + ", " + linea.Kilos.Replace(",", ".") + ", " + linea.Precio.Replace(",", ".") + ", '" + linea.Traza + "', " + linea.Importe.Replace(",", ".") + ", " + linea.Partida + ", " + linea.PartAnyo + ", '" + linea.PartAlm + "')";

                    int res_linea = EjecutaNonQuery(insert_linea);
                }

                //y ya está todo hecho
                //cerraremos el formulario y devolverá un OK
            }
            else
            {
                //si no tiene se avisa
                MessageBox.Show("No se puede grabar una factura sin líneas");

                //el formulario se cerrará pero no habrá hecho ningún cambio en la BD
            }
        }