Exemplo n.º 1
0
        /// <summary>
        /// Envía los ingresos contenidos en los arhivos XML a la capa de Acceso a Datos para su respectiva inserción en la BD.
        /// Los archivos XML son convetidos en listas genericas de tipo RecepcionControlDTO, AlmacenDTO y modificados previamente a su
        /// registro, añadiendo su numero de parte y respectivo numero de item.
        /// </summary>
        /// <param name="_numParte">Parametro de salida que es devuelta al CALLER, con número de parte que se ingresó.</param>
        /// <param name="_user">Nombre de Usuario que realiza el ingreso de piezas</param>
        /// <returns>Valor verdadero/falso segun el ingreso se haya ejecutado correctamente</returns>
        ///
        public bool IngresarDetalleAlmacen(out string _numParte, string _user)
        {
            //POBLAR LISTS
            _listRecepcionControl = _listXml.ConvertXmlToListRecepcionControl(_user);
            _listAlmacen          = _listXml.ConvertXmlToListAlmacen(_user);

            List <int> _returns = new List <int>();

            _listAlmacen = _listAlmacen.OrderBy(c => c.CodAlmacen).ToList();
            string _nuevoDocumento = "";

            try
            {
                //ACTUALIZAMOS CAMPOS DEL LISTADO DE ALMACENES
                int    _item = 1;
                int    _codAlmacenAnterior = 0;
                string ultimoDocumento     = "";

                ultimoDocumento = _almacenDal.SelectUltimoDocumentoDeHoy();
                if (!string.IsNullOrEmpty(ultimoDocumento))
                {
                    int ultimoDigito = int.Parse(ultimoDocumento.Substring(ultimoDocumento.Length - 2, 2));
                    ultimoDigito++;
                    _nuevoDocumento = ultimoDocumento.Substring(0, ultimoDocumento.Length - 2) + Helper.Mascara(ultimoDigito, "00");
                }
                //SI NO HAY PARTES DE HOY, CREAR UNO NUEVO
                else
                {
                    _nuevoDocumento = string.Concat(DateTime.Now.ToString("yyyyMMdd") + "01");
                }

                foreach (AlmacenDTO _alm in _listAlmacen)
                {
                    if (_item == 1)
                    {
                        _codAlmacenAnterior = _alm.CodAlmacen;
                    }
                    if (_codAlmacenAnterior != _alm.CodAlmacen)
                    {
                        _codAlmacenAnterior = _alm.CodAlmacen;
                        _item = 1;
                    }
                    _alm.NumeroDocumento = _nuevoDocumento;
                    _alm.Item            = _item;
                    //INSERTAMOS ALMACEN
                    int fila = _almacenDal.InsertDetalleAlmacen(_alm);
                    _returns.Add(fila);
                    _item++;
                }

                foreach (RecepcionControlDTO _recepcion in _listRecepcionControl)
                {
                    int fila = _recepcionControlDal.InsertRecepcionControl(_recepcion);
                    _returns.Add(fila);
                }

                if (_returns.Count == (_listAlmacen.Count + _listRecepcionControl.Count))
                {
                    _listXml.LimpiarArchivosXml(_user);
                    //Limpiar Listas para evitar duplicidad
                    _listAlmacen.Clear();
                    _listRecepcionControl.Clear();
                    _numParte = _nuevoDocumento;
                    return(true);
                }
                else
                {
                    _numParte = "";
                    return(false);
                }
            }
            catch (Exception exc)
            {
                Console.WriteLine(exc.Message.ToString());
                _numParte = "";
                return(false);
            }
        }