Beispiel #1
0
 public void GuardarPedido(Elemento element)
 {
     listaproducto.Add(element);
 }
Beispiel #2
0
 public void GuardarStock(Elemento stock)
 {
     _stock.Add(stock);
 }
Beispiel #3
0
        public void CargarPedidosActualesPendientes() //aca se guarda en memo toda la lista pedidos
        {
            string[] pedidoslineas = null;
            Elemento Element;
            Pedido   PedidoActual = new Pedido();

            if (File.Exists(rutapedidodiario)) // si se crashea el programa trata de levantar la lista pedido actual
            {
                string[] lineasplit    = null;
                int      lineacabecera = 1;
                pedidoslineas = File.ReadAllLines(rutapedidodiario);
                foreach (string linea in pedidoslineas)
                {
                    if (linea != string.Empty)
                    {
                        lineasplit = linea.Split(';');

                        if (lineasplit.Count() == 6)
                        {
                            if (lineacabecera != 1)
                            {
                                EmpresaInstanciada.GuardarPedido(PedidoActual);
                                //Cuando termino de cargar el pedido a la lista lo destruyo
                                PedidoActual = null;
                            }
                            else
                            {
                                lineacabecera = lineacabecera + 1;
                            }
                            //y Aca lo creo de vuelta cuando empiezo uno nuevo
                            PedidoActual                      = new Pedido();
                            PedidoActual.codigo               = lineasplit[0];
                            PedidoActual.comercio.codigo      = lineasplit[1];
                            PedidoActual.comercio.razonsocial = lineasplit[2];
                            PedidoActual.comercio.cuit        = lineasplit[3];
                            PedidoActual.comercio.domicilio   = lineasplit[4];
                            PedidoActual.EnviadoLogistica     = Convert.ToBoolean(lineasplit[5]);
                        }
                        else if (lineasplit.Count() == 2)
                        {
                            int cantidad = 0;
                            if (int.TryParse(lineasplit[1], out cantidad))
                            {
                                Element             = new Elemento();
                                Element.prod.idprod = lineasplit[0];
                                Element.cantidad    = cantidad;
                                PedidoActual.GuardarPedido(Element);
                            }
                            else
                            {
                                throw new Exception("Error en el formato del archivo de Pedidos Pendientes,no se pudo procesar correctamente.");
                            }
                        }
                        else
                        {
                            throw new Exception("Error en el formato del archivo de Pedidos Pendientes,no se pudo procesar correctamente.");
                        }
                    }
                }

                if (PedidoActual.codigo != null)
                {
                    EmpresaInstanciada.GuardarPedido(PedidoActual);
                }
            }
            else
            {
                using (StreamWriter sw = File.CreateText(rutapedidodiario))
                {
                    sw.Flush();
                }
            }
        }
Beispiel #4
0
        private void ProcesaStock(string Ruta) //////////// STOCK SE GRABA EN MEMORIA //////////////
        {
            int             numprod;
            List <Elemento> listaproduccion = new List <Elemento>();

            string[] lineas = null;
            Elemento Element;

            if (File.Exists(Ruta))
            {
                lineas = File.ReadAllLines(Ruta);
                string[] lineasplit = null;

                if (lineas.Any())
                {
                    var okvalidaliena = true;

                    foreach (string linea in lineas)
                    {
                        if (linea != string.Empty)
                        {
                            //aca empiezo a guardar cada contenido del array en el list de elementos acorde a mi stock (llamo a los objeto elemento, les pongo lo que corresponde
                            // y luego es lo guardo en un metodo en la clase Empresa dentro de la lista Stock! voila
                            Element    = new Elemento();
                            lineasplit = linea.Split(';');
                            int cantidad = 0;
                            if (!(lineasplit.Count() == 2) || !(lineasplit[0].Count() >= 2) || // v9.5
                                !(lineasplit[0].Remove(1).ToUpper() == "P") ||
                                !(lineasplit[0].Remove(0, 1).Count() >= 1) ||
                                !(lineasplit[0].Remove(0, 1).Count() < 6) ||
                                !(int.TryParse(lineasplit[0].Remove(0, 1), out numprod)) ||
                                !(numprod >= 1) ||
                                !(int.TryParse(lineasplit[1], out cantidad)) ||
                                !(cantidad > 0) ||
                                !(cantidad < 100000))                              //Se puede mejorar este if como hice con "carga stock inicial".
                            {
                                okvalidaliena = false;
                                throw new Exception("Error en el formato del archivo enviado por Produccion. El proceso finalizo sin cargar stock. Verifique las cantidades y el formato.");
                            }
                        }
                    }//ACA TERMINA EL PRIMER FOREACH.
                    if (okvalidaliena == true) //RECIEN ACA GUARDA EL STOCK.
                    {
                        foreach (string linea in lineas) //TOME EL ARRAY LINEAS (QUE TENIA LO DE LA RUTA) Y LO SEPARA EN LINEAS DE TIPO STRING. RECORRE TODAS.
                                                         //LO DE MAS ABAJO SIMPLEMENTE LO COPIE DEL DE ARRIBA SIN MODIFICAR, SALVO LA VARIABLE CANTIDAD.
                                                         //CANTIDAD SALIA DEL IF QUE VALIDAVABA, AHORA SALE DIRECTO DEL SPLIT CON UN INT.PARSE.
                        {
                            Element    = new Elemento();
                            lineasplit = linea.Split(';');

                            Element.prod.idprod = lineasplit[0];
                            Element.cantidad    = int.Parse(lineasplit[1]);
                            listaproduccion.Add(Element);
                        }
                    }
                }//TODO LO QUE SE AGREGO SE PROBO Y FUNCIONA. BORRA STOCK Y PROBALO POR LAS DUDAS (CARGA POR LO MENOS UNO BUENO Y UNO MALO).
                else
                {
                    throw new Exception("El archivo esta vacio, el proceso finalizo sin completarse");
                }
            }
            //ConfirmacionProcesado.Items.Add(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " - Se lee archivo de produccion");

            //en el punto anterior chupe lo que tenia en el txt que viene de planta y guarde en una lista todo en memoria
            // a continuacion voy a buscar los elementos de la lista del punto anterior a ver si existe en mi stock actual,
            // recorda que en el form load el stock actual siempre se carga en memoria, y abajo esta lista para ser recorrido,
            // busco si los elementos del punto anterior estan presentes en mi stock, si es asi, solo acumulo la cantidad, de lo contrario agrego una linea.

            foreach (Elemento elemprod in listaproduccion)
            {
                Elemento ElementoEncontrado = (Elemento)EmpresaInstanciada.stock.Find(x => x.prod.idprod == (elemprod.prod.idprod));
                if (ElementoEncontrado != null)
                {
                    ElementoEncontrado.cantidad = ElementoEncontrado.cantidad + elemprod.cantidad; // aca adiciona al stock los items que existen
                }
                else
                {
                    EmpresaInstanciada.GuardarStock(elemprod); // aca guarda items nuevos
                }
            }
            GrabarStockTxt(); // aca vuelca al txt lo que tiene en memoria de la lista resultante actualizada del foreach anterior.
            ConfirmacionProcesado.Items.Add(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " - Se actualizo stock");
            ConfirmacionProcesado.SelectedIndex = ConfirmacionProcesado.Items.Count - 1;
        }
Beispiel #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="Ruta"></param>
        private void ProcesaPedido(string Ruta)
        {
            long numerocuit = 0;
            int  nrocodcli  = 0;
            int  nrolinea   = 0;

            string[] lineas           = null;
            string[] nombrepedidoruta = null;
            string[] remueveExtension = null;
            Elemento Element;
            Pedido   pedidoComercio = new Pedido();

            if (File.Exists(Ruta))
            {
                nombrepedidoruta = Ruta.Split('_');
                remueveExtension = nombrepedidoruta[1].Split('.');
                if (ListaPedidosTemporal.Contains(remueveExtension[0]))
                {
                    MessageBox.Show("Ya esta cargado este pedido", "Atencion");
                }
                else
                {
                    lineas = File.ReadAllLines(Ruta);
                    string[] lineasplit = null;
                    foreach (string linea in lineas)
                    {
                        if (nrolinea == 0)
                        {
                            lineasplit = linea.Split(';');
                            if (lineasplit.Count() == 4 && !string.IsNullOrWhiteSpace(lineasplit[0]) &&
                                lineasplit[0].Count() >= 2 && lineasplit[0].Remove(1).ToUpper() == "C" &&                       //v9.5
                                int.TryParse(lineasplit[0].Remove(0, 1), out nrocodcli) &&
                                nrocodcli > 0 &&
                                !string.IsNullOrWhiteSpace(lineasplit[1]) &&
                                !string.IsNullOrWhiteSpace(lineasplit[2]) && lineasplit[2].IndexOf("-") == 2 && lineasplit[2].LastIndexOf("-") == 11 &&
                                lineasplit[2].Replace("-", "").Count() == 11 &&
                                Int64.TryParse(lineasplit[2].Replace("-", ""), out numerocuit) &&
                                numerocuit >= 0 && numerocuit <= 99999999999 &&                         // (Son 11 numeros 9) Int64 maximo valor: 9223372036854775807.
                                !string.IsNullOrWhiteSpace(lineasplit[3]))
                            {
                                pedidoComercio.codigo               = remueveExtension[0];
                                pedidoComercio.EnviadoLogistica     = false;
                                pedidoComercio.comercio.codigo      = lineasplit[0];
                                pedidoComercio.comercio.razonsocial = lineasplit[1];
                                pedidoComercio.comercio.cuit        = lineasplit[2];
                                pedidoComercio.comercio.domicilio   = lineasplit[3];
                                nrolinea = nrolinea + 1;
                            }
                            else
                            {
                                throw new Exception("Error en el formato del archivo de pedido en la cabecera, el proceso finalizo sin completarse");
                            }
                        }
                        else
                        {
                            int numprod;
                            int cantidad = 0;
                            lineasplit = linea.Split(';');
                            if ((lineasplit.Count() == 2) && lineasplit[0].Count() >= 2 && //v9.5
                                lineasplit[0].Remove(1).ToUpper() == "P" &&
                                lineasplit[0].Remove(0, 1).Count() >= 1 &&
                                lineasplit[0].Remove(0, 1).Count() < 6 &&
                                int.TryParse(lineasplit[0].Remove(0, 1), out numprod) &&
                                numprod >= 1 &&
                                (int.TryParse(lineasplit[1], out cantidad)) &&
                                cantidad > 0)
                            {
                                Elemento ElementoEncontrado = (Elemento)EmpresaInstanciada.stock.Find(x => x.prod.idprod == lineasplit[0]);
                                if (ElementoEncontrado != null)
                                {
                                    Element             = new Elemento();
                                    Element.prod.idprod = lineasplit[0];
                                    Element.cantidad    = cantidad;
                                    pedidoComercio.GuardarPedido(Element);
                                }
                            }
                            else
                            {
                                throw new Exception("Error en el formato del archivo de pedido, el proceso finalizo sin completarse");
                            }
                        }
                    }
                    if (pedidoComercio.listaproducto.Count > 0)
                    {
                        EmpresaInstanciada.pedidos.Add(pedidoComercio);
                    }
                    ListaPedidosTemporal.Add(remueveExtension[0]);
                    using (StreamWriter sw = File.AppendText(rutapedidohistorico))
                    {
                        sw.Write(remueveExtension[0] + "\r\n");
                    }
                    MessageBox.Show("El pedido fue procesado correctamente", "Informacion");
                }
                GrabarPedidosTxt();
            }
            ConfirmacionProcesado.Items.Add(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " - Pedido Procesado");
            ConfirmacionProcesado.SelectedIndex = ConfirmacionProcesado.Items.Count - 1;
        }
Beispiel #6
0
        private void ProcesaEnvioLogistica()
        {
            string nombreArchivoLogistica = enviologistica + "Lote_" + codigodecomercio + "_L" + new Random().Next(1, 999).ToString() + ".txt";

            using (StreamWriter sw = File.CreateText(nombreArchivoLogistica))
            {
                foreach (Pedido PedidoActualComercio in EmpresaInstanciada.pedidos)
                {
                    if (PedidoActualComercio.EnviadoLogistica == false)//Esto lo habiamos visto pero no se por que no lo modificamos, unicamente procesa los enviados a logistica false.. ya que los true ya los envio
                    {
                        //Ultima modificacion 25-11-2019, esto controla que todos los productos del pedido tengan stock, caso contrario el pedido no se procesa
                        //Tampoco se elimina, solo que se "saltea", de forma tal que si se procesa otro lote de produccion que aumenta el stock en el siguiente envio a logistica se vuelve a procesar
                        //Como los pedidos tienen orden cronologico se va a procesar primero.
                        if (VerificaStockDePedido(PedidoActualComercio.listaproducto))//Esto es lo ultimo que hicimos no lo modifique anda
                        {
                            sw.WriteLine(EmpresaInstanciada.razonsocial + ";" + EmpresaInstanciada.cuit + ";" + EmpresaInstanciada.domicilio);
                            sw.WriteLine("---");
                            sw.WriteLine(PedidoActualComercio.codigo + ";" + PedidoActualComercio.comercio.domicilio);


                            foreach (Elemento elementopedido in PedidoActualComercio.listaproducto)
                            {
                                Elemento ElementoEncontrado = (Elemento)EmpresaInstanciada.stock.Find(x => x.prod.idprod == (elementopedido.prod.idprod));

                                if (ElementoEncontrado != null)
                                {
                                    if (ElementoEncontrado.cantidad >= elementopedido.cantidad)
                                    {
                                        ElementoEncontrado.cantidad = ElementoEncontrado.cantidad - elementopedido.cantidad;
                                        sw.WriteLine(elementopedido.prod.idprod + ";" + elementopedido.cantidad);
                                    }
                                }
                            }
                            PedidoActualComercio.EnviadoLogistica = true;
                        }
                        else
                        {
                            //No tenia stock entonces le dejo estado en false, procesalo en el  siguiente envio
                            PedidoActualComercio.EnviadoLogistica = false;
                        }
                    }
                }
                sw.Flush();
            }
            string[] manipulacionDeRuta = nombreArchivoLogistica.Split('\\');
            //Si el archivo esta vacio es que no tiene pedidos lo borro
            bool seborra = false;

            using (var myFile = File.Open(nombreArchivoLogistica, FileMode.Open))
            {
                if (myFile.Length == 0)
                {
                    seborra = true;
                }
            }
            if (seborra)
            {
                File.Delete(nombreArchivoLogistica);
                ConfirmacionProcesado.Items.Add(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " - No se genero ningun lote a logistica");
                ConfirmacionProcesado.SelectedIndex = ConfirmacionProcesado.Items.Count - 1;
            }
            else
            {
                ConfirmacionProcesado.Items.Add(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " - Se genero el archivo " + manipulacionDeRuta[2] + " de lote para logistica");
                ConfirmacionProcesado.SelectedIndex = ConfirmacionProcesado.Items.Count - 1;
            }
            GrabarStockTxt();
            GrabarPedidosTxt();
            //ConfirmacionProcesado.Items.Add(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " - Se actualizo stock y pedidos");
        }