Beispiel #1
0
        private void imprimir_Click(object sender, EventArgs e)
        {
            //cuando pulsamos en el dvg extraemos el numero de la remesa
            int fila = Convert.ToInt32(dgvremesas.CurrentRow.Index);

            mesrremesa = Convert.ToString(dgvremesas[1, fila].Value);

            //filtramos la base de datos de facturacion por el numero de remesa. y que contabilizado= false
            var facturasacontabilizar = bd.Facturas.Where(x => x.factremesa == mesrremesa).ToList();



            // pasamos los datos a la clase para imprimir el listado

            List <datoslistadoreme> alistar = new List <datoslistadoreme>();


            foreach (var temp in facturasacontabilizar)
            {
                datoslistadoreme mylistado = new datoslistadoreme();

                mylistado.listnumerofactura = temp.factnumerofact.ToString();
                mylistado.listfecha         = temp.factfecha;
                mylistado.listnombre        = temp.factnombre;
                mylistado.listbase          = Convert.ToDecimal(temp.factbase1 + temp.factbase2 + temp.factbaseempleado);
                mylistado.listsuplidos      = Convert.ToDecimal(temp.factbase2);
                mylistado.listiva           = Convert.ToDecimal(temp.factimporteiva);
                mylistado.listtotal         = Convert.ToDecimal(temp.facttotalfactura);
                mylistado.listnumeroremesa  = temp.factremesa;
                mylistado.listtotalremesa   = Convert.ToDecimal(temp.facttotalremesa);

                alistar.Add(mylistado);
            }

            // cargamos la pantalla de listados de remesas
            Form2 forma = new Form2(alistar);

            forma.Show();
        }
        public void ExportarToPdf(datoslistadoreme datosListado, string pdfName)
        {
            //this.reportViewer1.RefreshReport();
            string mimeType  = string.Empty;
            string encoding  = string.Empty;
            string extension = string.Empty;

            Warning[] warnings;
            string[]  streamIds;


            this.administracionAntonioDataSet1BindingSource.DataSource = datosListado;

            byte[] bytes = reportViewer1.LocalReport.Render("PDF", null, out mimeType, out encoding,
                                                            out extension, out streamIds, out warnings);

            var exportPath = string.Format(pdfName);

            FileInfo file = new FileInfo(exportPath);

            file.Directory.Create(); // If the directory already exists, this method does nothing.

            File.WriteAllBytes(file.FullName, bytes);
        }
        private void facturar_Click(object sender, EventArgs e)
        {
            //mostramos el detagrib
            dataGridView1.Visible = true;


            CheckForIllegalCrossThreadCalls = false;
            var formEsperar = new FormEsperar("Creando Facturas");
            var hilo        = Task.Factory.StartNew(() =>
            {
                generar.Enabled  = false;
                añadir.Enabled   = false;
                eliminar.Enabled = false;
                imprimir.Enabled = true;
                facturar.Enabled = false;
                //mostramos el detagrib
                //     dataGridView1.Visible = true;

                //cargamos los datos en el dgv.

                //**** calculamos el valor de la coluna numerador
                decimal numerofactura = 1;

                if (bd.Facturas.Any())
                {
                    // esto comprueba que las facturas corresponde a un año nuevo
                    //por lo que deberia reiniciar la numeracion de las facturas

                    // extrae el año de la ultima factuar
                    string yearfactura = (bd.Facturas.OrderByDescending(x => x.factfecha).First().factfecha.Split('/').Last());
                    // extrae el año del sistema
                    int fechaHoy = DateTime.Now.Year;

                    //compara ambos años, si el año de la factura es menor o igual al año del sistema
                    //continua con la numeracion actual, si no la reinicia.
                    if (fechaHoy <= Convert.ToInt16(yearfactura))
                    {
                        numerofactura = (bd.Facturas.OrderByDescending(x => x.factnumerofact).First().factnumerofact.Value) + 1;
                    }
                }


                List <temporal> lista = new List <temporal>();



                foreach (DataGridViewRow row in dgvTemporal.Rows)

                {
                    temporal datosapasar = new temporal();

                    datosapasar.tempnumerofactura = Convert.ToDecimal(numerofactura);
                    numerofactura++;
                    datosapasar.tempremesa           = Convert.ToString(row.Cells[0].Value);
                    datosapasar.temptipoiva          = Convert.ToDecimal(row.Cells[1].Value);
                    datosapasar.tempcod              = Convert.ToDecimal(row.Cells[2].Value);
                    datosapasar.tempfecha            = Convert.ToString(row.Cells[3].Value);
                    datosapasar.tempnombre           = Convert.ToString(row.Cells[4].Value);
                    datosapasar.tempconcepto1        = Convert.ToString(row.Cells[5].Value);
                    datosapasar.temptarifa           = Convert.ToDecimal(row.Cells[6].Value);
                    datosapasar.tempconcepto2        = Convert.ToString(row.Cells[7].Value);
                    datosapasar.temptarifa2          = Convert.ToDecimal(row.Cells[8].Value);
                    datosapasar.tempempleados        = Convert.ToDecimal(row.Cells[9].Value);
                    datosapasar.temppvempleados      = Convert.ToDecimal(row.Cells[10].Value);
                    datosapasar.templaboral          = Convert.ToDecimal(row.Cells[11].Value);
                    datosapasar.tempbase             = Convert.ToDecimal(row.Cells[12].Value);
                    datosapasar.tempiva              = Convert.ToDecimal(row.Cells[13].Value);
                    datosapasar.temptotal            = Convert.ToDecimal(row.Cells[14].Value);
                    datosapasar.temppormail          = Convert.ToBoolean(row.Cells[15].Value);
                    datosapasar.tempdoiciliado       = Convert.ToBoolean(row.Cells[16].Value);
                    datosapasar.tempcif              = Convert.ToString(row.Cells[17].Value);
                    datosapasar.tempdireccion        = Convert.ToString(row.Cells[18].Value);
                    datosapasar.templocalidad        = Convert.ToString(row.Cells[19].Value);
                    datosapasar.tempprovincia        = Convert.ToString(row.Cells[20].Value);
                    datosapasar.tempcp               = Convert.ToString(row.Cells[21].Value);
                    datosapasar.tempmail             = Convert.ToString(row.Cells[22].Value);
                    datosapasar.tempiban1            = Convert.ToString(row.Cells[23].Value);
                    datosapasar.tempiban2            = Convert.ToString(row.Cells[24].Value);
                    datosapasar.tempiban3            = Convert.ToString(row.Cells[25].Value);
                    datosapasar.tempiban4            = Convert.ToString(row.Cells[26].Value);
                    datosapasar.tempiban5            = Convert.ToString(row.Cells[27].Value);
                    datosapasar.tempiban6            = Convert.ToString(row.Cells[28].Value);
                    datosapasar.tempparadomiciliar   = Convert.ToBoolean(row.Cells[31].Value);
                    datosapasar.tempparaimprimir     = Convert.ToBoolean(row.Cells[32].Value);
                    datosapasar.tempparacontabilizar = Convert.ToBoolean(row.Cells[33].Value);



                    lista.Add(datosapasar);
                }

                dataGridView1.DataSource = lista.ToList();

                //ahora vamos a pasar los datos a la tabla de factura.

                //**** calculamos el valor de la coluna numerador
                //var ultimonumerador = bd.Facturas.OrderByDescending(x => x.factcontador).First().factcontador;


                decimal totalbaseremesa  = 0;
                decimal totalivaremesa   = 0;
                decimal totaltotalremesa = 0;
                string numeroremesa      = "";
                string fecharemesa       = "";
                int totaldocumentos      = 0;


                List <Facturas> facturasAGuardar = new List <Facturas>();

                //            List<datoslistadoreme> alistar = new List<datoslistadoreme>();

                foreach (var temp in lista)
                {
                    datoslistadoreme mylistado = new datoslistadoreme();
                    Facturas myFactura         = new Facturas();


                    myFactura.factbase1 = temp.tempbase;
                    //          mylistado.listimporte1 = temp.

                    myFactura.factnumerofact    = temp.tempnumerofactura;
                    mylistado.listnumerofactura = temp.tempnumerofactura.ToString();

                    myFactura.factremesa     = temp.tempremesa;
                    myFactura.factfecha      = temp.tempfecha;
                    myFactura.factcodcliente = temp.tempcod;
                    myFactura.factnombre     = temp.tempnombre;
                    mylistado.listnombre     = temp.tempnombre;

                    myFactura.factdireccion = temp.tempdireccion;
                    mylistado.listdireccion = temp.tempdireccion;

                    myFactura.factlocalidad = temp.templocalidad;
                    mylistado.listpoblacion = temp.templocalidad;

                    myFactura.factprovincia = temp.tempprovincia;
                    mylistado.listprovincia = temp.tempprovincia;

                    myFactura.factcp = temp.tempcp;
                    mylistado.listcp = temp.tempcp;

                    myFactura.factnif = temp.tempcif;
                    mylistado.listcif = temp.tempcif;


                    myFactura.factiban1     = temp.tempiban1;
                    myFactura.factiban2     = temp.tempiban2;
                    myFactura.factiban3     = temp.tempiban3;
                    myFactura.factiban4     = temp.tempiban4;
                    myFactura.factiban5     = temp.tempiban5;
                    myFactura.factiban6     = temp.tempiban6;
                    myFactura.factconcepto1 = temp.tempconcepto1;
                    mylistado.listconcepto1 = temp.tempconcepto1;

                    myFactura.factconcepto2 = temp.tempconcepto2;
                    mylistado.listconcepto2 = temp.tempconcepto2;

                    myFactura.factbase1    = temp.temptarifa;
                    mylistado.listimporte1 = temp.temptarifa;


                    mylistado.listbase = temp.tempbase;

                    myFactura.factconcepto2 = temp.tempconcepto2;
                    myFactura.factbase2     = temp.temptarifa2;
                    mylistado.listsuplidos  = temp.temptarifa2;

                    myFactura.factemleados     = temp.tempempleados;
                    mylistado.listnumempleados = temp.tempempleados;

                    myFactura.factprecioempleado   = temp.temppvempleados;
                    mylistado.listimporteempleados = temp.temppvempleados;

                    myFactura.factbaseempleado   = temp.templaboral;
                    mylistado.listtotalempleados = temp.templaboral;


                    myFactura.facttipoiva    = temp.temptipoiva;
                    myFactura.factimporteiva = temp.tempiva;
                    mylistado.listiva        = temp.tempiva;

                    myFactura.facttotalfactura = temp.temptotal;
                    mylistado.listtotal        = temp.temptotal;

                    myFactura.factpara_imprimir = true;
                    myFactura.factimpresa       = false;

                    if (temp.temppormail == true)
                    {
                        myFactura.factpara_imprimir = false;
                    }
                    myFactura.factpormail = temp.temppormail;
                    myFactura.factmail    = temp.tempmail;

                    myFactura.factparacontabilizar = temp.tempparacontabilizar;
                    myFactura.factcontabilizada    = false;
                    myFactura.factparadomiciliar   = temp.tempparadomiciliar;
                    myFactura.factdomiciliada      = false;

                    totalbaseremesa = totalbaseremesa + temp.tempbase;


                    totalivaremesa   = totalivaremesa + temp.tempiva;
                    totaltotalremesa = totaltotalremesa + temp.temptotal;

                    numeroremesa        = temp.tempremesa;
                    fecharemesa         = temp.tempfecha;
                    mylistado.listfecha = temp.tempfecha;


                    mylistado.listnombreemisor = bd.Propios.First().minombre;
                    // mylistado.listtotalremesa = totaltotalremesa;
                    mylistado.listnumeroremesa = numeroremesa;


                    Globales.anofactura = Convert.ToDateTime(temp.tempfecha);

                    facturasAGuardar.Add(myFactura);
                    alistar.Add(mylistado);
                }
                // pasamos los datos a la tabla facturacion y remesa
                bd.Facturas.AddRange(facturasAGuardar);
                bd.SaveChanges();


                var pasoremesa          = new Resilla();
                pasoremesa.remesanumero = numeroremesa;


                pasoremesa.remesafecha = fecharemesa;
                pasoremesa.remesatotal = Convert.ToDecimal(totaltotalremesa);
                // pasoremesa.remesaimpresa = false;
                pasoremesa.remesacontabilizada = false;



                // pasamos los datos a remesa
                bd.Resilla.Add(pasoremesa);

                //grabamos el total de la remesa en la clase a listar
                alistar.ToList().ForEach(x => x.listtotalremesa = totaltotalremesa);
                totaldocumentos = alistar.Count;
                alistar.ToList().ForEach(x => x.listtotaldocumentos = totaldocumentos);



                //ahora vamos a introducir el total de la remesa en las facturas.

                // Filtramos la tabla facuras por el numero de remesa
                var facturasfiltradas = bd.Facturas.Where(x => x.factremesa == numeroremesa);
                //Modificamos el campo
                facturasfiltradas.ToList().ForEach(f => f.facttotalremesa = totaltotalremesa);


                // Guardamos los cambios
                bd.SaveChanges();



                //desasctivamos los botones de generar, añadir y borrar
                añadir.Enabled   = false;
                generar.Enabled  = false;
                eliminar.Enabled = false;

                formEsperar.Close();
            });

            formEsperar.ShowDialog();

            hilo.Dispose();
            CheckForIllegalCrossThreadCalls = true;


            var form = new FormEsperar("Imprimiendo Facturas");

            CheckForIllegalCrossThreadCalls = false;
            var hilo2 = Task.Factory.StartNew(() =>
            {
                // cargamos la pantalla de listados de remesas
                for (int i = 0; i < alistar.Count; i++)
                {
                    Form3 nuevaForma = new Form3();
                    var dato         = alistar[i];


                    int year = Globales.anofactura.Year;


                    //nuevaForma.ExportarToPdf(dato, $"C:\\Equipo Martin\\facturas\\Nueva carpeta\\Test{i + 1}.pdf");
                    nuevaForma.ExportarToPdf(dato, $"C:\\ByMartin\\Clientes\\{dato.listnombre}\\Facturacion{year}\\Factura {dato.listnumerofactura}.pdf");
                }

                form.Close();
            });

            form.ShowDialog();

            hilo2.Dispose();
            CheckForIllegalCrossThreadCalls = true;



            // cargamos la pantalla de listados de remesas
            Form2 forma = new Form2(alistar);

            forma.Show();
        }