示例#1
0
        private ArrayList Obtener_Lista_Albaranes(string DetCod)
        {
            //devuelve array de datos, con todos los albaranes sin facturar del detallista

            ArrayList resultado = new ArrayList();

            string strQ = "SELECT * FROM VENALB_CABE WHERE (DetCod=" + DetCod + ") AND (VenNfp IS NULL) AND (AnyoFra IS NULL) AND (SerieFra IS NULL) AND (Anulado<>1) AND (VenTve<>51) AND (VenTve<>43)";

            if (ckbFechaDesde.Checked == true)
            {
                //filtro por fecha
                strQ += " AND (VenFec BETWEEN '" + dateTimePicker_Inicio.Text + "' AND '" + dateTimePicker_Fin.Text + "') ";
            }

            strQ += " ORDER BY VenFec, VenAlb";

            try
            {
                SqlDataReader myReader  = null;
                SqlCommand    myCommand = new SqlCommand(strQ, CnO);
                myReader = myCommand.ExecuteReader();

                while (myReader.Read())
                {
                    dato_albaran albaran = new dato_albaran();

                    albaran.VenAlb = myReader["VenAlb"].ToString();
                    albaran.Anyo   = myReader["Anyo"].ToString();

                    resultado.Add(albaran);
                }

                myReader.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            return(resultado);
        }
示例#2
0
        //Antes creaba para cada albarán seleccionado una factura, ahora, a partir de la versión 3.01, crea una factura con todos los albaranes seleccionados de un detallista
        private void btn_Grabar_Facturas_Click(object sender, EventArgs e)
        {
            string gIdent = this.GetType().FullName + " " + System.Reflection.MethodBase.GetCurrentMethod().Name;
            GloblaVar.gUTIL.ATraza(gIdent + " Entrada a  " + sender.ToString());

            if (MessageBox.Show("¿Seguro que desea emitir las facturas seleccionadas?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == System.Windows.Forms.DialogResult.Yes)
            {
                bool seleccion = false;
                this.Cursor = Cursors.WaitCursor;

                try
                {

                    List<dato_albaran> albaranesSeleccionados = new List<dato_albaran>();

                    DataGridViewCheckBoxCell CelChk;
                    foreach (DataGridViewRow Fila in dGV1.Rows)
                    {
                        CelChk = Fila.Cells[Col_Selecc] as DataGridViewCheckBoxCell;
                        if (Convert.ToBoolean(CelChk.EditedFormattedValue) == true)
                        {
                            //GloblaVar.gUTIL.SP4(Fila.Cells["Albaran"].Value.ToString(), Convert.ToDateTime(Fila.Cells["Fecha"].Value.ToString()).Year.ToString(), "AA");

                            dato_albaran dato = new dato_albaran();
                            dato.VenAlb = Fila.Cells["Albaran"].Value.ToString();
                            dato.Anyo = Convert.ToDateTime(Fila.Cells["Fecha"].Value.ToString()).Year.ToString();
                            dato.CodDet = Fila.Cells["Cod.Det"].Value.ToString();

                            albaranesSeleccionados.Add(dato);

                            seleccion = true;

                        }
                    }

                    if(seleccion==true)
                    {
                        //obtiene los distintos detallistas (CodDet) de los albaranes que hemos seleccionado
                        var distinctCodDet = albaranesSeleccionados.GroupBy(x => x.CodDet).Select(group => group.First());

                        foreach (dato_albaran d in distinctCodDet)
                        {
                            //obtiene los albaranes de un detallista (CodDet)
                            ArrayList albaranesCodDet = new ArrayList(albaranesSeleccionados.Where(x => x.CodDet == d.CodDet).ToList());

                            if (frmPpal.USUARIO == "5" || frmPpal.USUARIO == "8")
                            {
                                Funciones.Facturar(d.CodDet, "AA", true, albaranesCodDet, GloblaVar.gConRem, dateTimePicker_FechaFactura.Text);
                            }
                            else
                            {
                                Funciones.Facturar(d.CodDet, "AA", true, albaranesCodDet, GloblaVar.gConRem, dateTimePicker_Inicio.Text);
                            }

                        }

                        CargardGV();

                    }
                    else
                    {
                        MessageBox.Show("Debe seleccionar algún albarán para emitir la factura");
                    }

                }
                catch (Exception ex)
                {
                    GloblaVar.gUTIL.ATraza(gIdent + ex.ToString());
                    MessageBox.Show(ex.ToString());
                }

                this.Cursor = Cursors.Default;
            }
        }
示例#3
0
        private void button_Grabar_Click(object sender, EventArgs e)
        {
            //GRABAR LA FACTURA
            string gIdent = this.GetType().FullName + " " + System.Reflection.MethodBase.GetCurrentMethod().Name;

            GloblaVar.gUTIL.ATraza(gIdent + " Click en Grabar Factura Manual");

            //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);
                }
            }
            GloblaVar.gUTIL.ATraza(gIdent + " Recopiladas lineas que formarán parte de la factura");
            //comprobamos que al menos haya un albarán marcado por el usuario antes de seguir
            //si no lo que pasaría es que se haría una factura vacía, sin líneas

            if (Lista_Albaranes.Count > 0)
            {
                //introducimos una comprobación de albaranes facturados para que no se facturen dos veces
                //así sabemos si se les ha aplicado Marcar_Ventas
                //en ese caso IdFactura devolverá cadena vacía

                string IdFactura = Funciones.Facturar(textBox_DetCod.Text, comboBox_Serie.Text, false, Lista_Albaranes, CnO);

                GloblaVar.gUTIL.ATraza(gIdent + " Obtenido numero de Factura " + IdFactura + "/" + comboBox_Serie.Text + "-");

                if (IdFactura != "")
                {
                    //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 insert_cabecera = "INSERT INTO FACTV_CABE(Factura, Anyo, Serie, FechaEmision, DetCod, BI1, IVA1, RE1, ImpteFactura, ImpteCobrado, ImptePendiente, Observaciones, TextoPie, TextoCabe) ";
                    insert_cabecera += " VALUES(" + IdFactura + "," + textBox_Anyo.Text + ", '" + comboBox_Serie.Text + "', '" + DateTime.Today.ToShortDateString() + "', " + textBox_DetCod.Text + ", " + textBox_BI.Text.Replace(",", ".") + ", " + textBox_IVA.Text.Replace(",", ".") + ", " + textBox_Recargo.Text.Replace(",", ".") + ", " + textBox_Importe.Text.Replace(",", ".") + ", 0, " + textBox_Importe.Text.Replace(",", ".") + ", '" + observaciones + "', '" + textopie + "', '" + textocabe + "')";

                    int res_cabecera = EjecutaNonQuery(insert_cabecera);

                    if (res_cabecera == 1)
                    {
                        //ahora hay que marcar los albaranes de venta como facturados
                        Funciones.Marcar_Ventas(IdFactura, textBox_Anyo.Text, comboBox_Serie.Text, Lista_Albaranes, CnO);

                        switch (frmPpal.USUARIO)
                        {
                        case "1":
                            Imprimir_factura(IdFactura);
                            Cobrar_factura(IdFactura);
                            break;

                        case "2":
                            break;

                        default:
                            break;
                        }
                        GloblaVar.gUTIL.ATraza(gIdent + " Se ajustará el cobro de la factura Introducida: " + IdFactura + "/" + textBox_Anyo.Text + "-" + comboBox_Serie.Text);
                        GloblaVar.gUTIL.SP3(IdFactura, textBox_Anyo.Text, comboBox_Serie.Text);
                        Cargar();
                        Limpieza_Factura();
                        MessageBox.Show("Factura " + IdFactura.ToString() + " ha sido grabada");
                        GloblaVar.gUTIL.ATraza(gIdent + "Factura " + IdFactura + " ha sido grabada");
                    }
                    else
                    {
                        MessageBox.Show("Problema al grabar la factura");
                        GloblaVar.gUTIL.ATraza(gIdent + "Factura " + IdFactura + " ha sido grabada");
                    }
                }
                else
                {
                    //posible albarán ya facturado, recargar
                    Cargar();
                    Limpieza_Factura();
                }
            }
        }
        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
            }
        }