コード例 #1
0
        public INV_ENCA_DESP despachar(INV_ENCA_DESP data)
        {
            _datasistema.conectarInventario();
            INV_ENCA_DESP p = (from u in _datasistema.ContextoInventario.INV_ENCA_DESP
                               where u.ID == data.ID
                               select u).First();
            List <V_INV_DETA_DESP> lista_deta = (from u in _datasistema.ContextoInventario.V_INV_DETA_DESP
                                                 where u.ID == data.ID
                                                 select u).ToList();

            if (p.CD_ESTA_DOCUMENTO == 'D')
            {
                int?   error = 0;
                string msj   = string.Empty;

                ///valida si hay existencia
                foreach (var item in lista_deta)
                {
                    INV_ARTICULO art = (from u in _datasistema.ContextoInventario.INV_ARTICULO where u.ID == item.ID_ARTICULO select u).First();
                    if ((from u in _datasistema.ContextoInventario.INV_EXISTENCIA
                         where u.ID_EMPRESA == _datasistema.empresa.ID && u.NM_EJERCICIO == _datasistema.periodo.NM_EJERCICIO && u.NM_PERIODO == _datasistema.periodo.NM_PERIODO && u.ID_BODEGA == p.ID_UBICACION_DESP && u.ID_ARTICULO == item.ID_ARTICULO
                         select u).Count() <= 0 && art.FLG_INVENTARIABLE == 'S')
                    {
                        throw new Exception("El articulo " + item.DS_NOMBRE + " no es inventariable ");
                    }

                    INV_EXISTENCIA exist = (from u in _datasistema.ContextoInventario.INV_EXISTENCIA
                                            where u.ID_EMPRESA == _datasistema.empresa.ID && u.NM_EJERCICIO == _datasistema.periodo.NM_EJERCICIO && u.NM_PERIODO == _datasistema.periodo.NM_PERIODO && u.ID_BODEGA == p.ID_UBICACION_DESP && u.ID_ARTICULO == item.ID_ARTICULO
                                            select u).First();
                    if (exist.NM_CANT_ACTUAL < item.NM_CANTIDAD && art.FLG_INVENTARIABLE == 'S')
                    {
                        throw new Exception("No hay suficientes existencias del " + item.DS_NOMBRE + " para despacharlo");
                    }
                    INV_DETA_REQ req = (from u in _datasistema.ContextoInventario.INV_DETA_REQ
                                        where u.ID == item.ID_DETA_REQ
                                        select u).First();
                    if (item.NM_CANTIDAD > req.NM_CANTIDAD - req.NM_CANT_DESP && item.FLG_DESP != 'S')
                    {
                        throw new Exception("El articulo " + item.DS_NOMBRE + " solo tiene pendiente de despachar " + (req.NM_CANTIDAD - req.NM_CANT_DESP).ToString());
                    }
                }

                foreach (var item in lista_deta)
                {
                    INV_ARTICULO art = (from u in _datasistema.ContextoInventario.INV_ARTICULO where u.ID == item.ID_ARTICULO select u).First();
                    if (item.FLG_DESP != 'S')
                    {
                        if (art.FLG_INVENTARIABLE == 'S')
                        {
                            _datasistema.ContextoInventario.PR_INV_PROC_DESPACHO(_datasistema.empresa.ID, p.ID_UBICACION_DESP, p.NM_EJERCICIO, p.NM_PERIODO, item.ID_ARTICULO, item.NM_CANTIDAD, p.ID, p.ID_TIPO_DOCUMENTO, p.CD_SERIE + p.CD_NUMERO.ToString(), ref error, ref msj);
                        }
                        if (error == 0)
                        {
                            INV_DETA_DESP d = (from u in _datasistema.ContextoInventario.INV_DETA_DESP
                                               where u.ID == item.ID
                                               select u).First();
                            INV_DETA_REQ r = (from u in _datasistema.ContextoInventario.INV_DETA_REQ
                                              where u.ID == item.ID_DETA_REQ
                                              select u).First();
                            d.FLG_DESP     = 'S';
                            r.NM_CANT_DESP = r.NM_CANT_DESP + item.NM_CANTIDAD;
                            _datasistema.ContextoInventario.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues);
                            _datasistema.ContextoInventario.SubmitChanges();
                        }
                        else
                        {
                            throw new Exception(msj);
                        }
                    }
                }

                if ((from u in _datasistema.ContextoInventario.INV_DETA_DESP
                     where u.ID_DESP == p.ID && u.FLG_DESP != 'S'
                     select u).Count() > 0)
                {
                    throw new Exception("Despacho parcial: Hay productos que no se despacharon, reintentar");
                }
                p.CD_ESTA_DOCUMENTO = 'A';
                _datasistema.ContextoInventario.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues);
                _datasistema.ContextoInventario.SubmitChanges();
                _datasistema.ContextoInventario.PR_CONT_GENE_CONT_DESP(p.ID, ref error, ref msj);
                if (error != 0)
                {
                    throw new Exception(msj);
                }
            }
            return(p);
        }
コード例 #2
0
ファイル: frm_ajuste.cs プロジェクト: aeromeme/wincont
        public void procesarSalida()
        {
            try
            {
                if (uigridview.FocusedRowHandle < 0)
                {
                    return;
                }
                _datasistema.conectarInventario();
                INV_ENCA_AJUS p = (from u in _datasistema.ContextoInventario.INV_ENCA_AJUS where u.ID == int.Parse(UIID.Text) select u).First();
                if (p.CD_ESTA_DOCUMENTO == 'D')
                {
                    if (MetodosForm.preguntar("¿Quiere efectuar la salida?"))
                    {
                        foreach (var item in lista_deta)
                        {
                            try
                            {
                                INV_ARTICULO art = (from u in _datasistema.ContextoInventario.INV_ARTICULO where u.ID == item.ID_ARTICULO select u).First();
                                if ((from u in _datasistema.ContextoInventario.INV_EXISTENCIA
                                     where u.ID_EMPRESA == _datasistema.empresa.ID && u.NM_EJERCICIO == _datasistema.periodo.NM_EJERCICIO && u.NM_PERIODO == _datasistema.periodo.NM_PERIODO && u.ID_BODEGA == p.ID_UBICACION_BODEGA && u.ID_ARTICULO == item.ID_ARTICULO
                                     select u).Count() <= 0 && art.FLG_INVENTARIABLE == 'S')
                                {
                                    MetodosForm.mensajeInfo("Revisar", "No hay existencias del " + item.DS_NOMBRE + " para despacharlo", _datasistema);
                                    return;
                                }

                                INV_EXISTENCIA exist = (from u in _datasistema.ContextoInventario.INV_EXISTENCIA
                                                        where u.ID_EMPRESA == _datasistema.empresa.ID && u.NM_EJERCICIO == _datasistema.periodo.NM_EJERCICIO && u.NM_PERIODO == _datasistema.periodo.NM_PERIODO && u.ID_BODEGA == p.ID_UBICACION_BODEGA && u.ID_ARTICULO == item.ID_ARTICULO
                                                        select u).First();
                                if (exist.NM_CANT_ACTUAL < item.NM_CANTIDAD && art.FLG_INVENTARIABLE == 'S')
                                {
                                    MetodosForm.mensajeInfo("Revisar", "No hay suficiente existencia del " + item.DS_NOMBRE + " para despacharlo", _datasistema);
                                    return;
                                }
                                //INV_DETA_AJUS req = (from u in _datasistema.ContextoInventario.INV_DETA_AJUS
                                //                    where u.ID == item.ID_DETA_AJUS
                                //                    select u).First();
                                //if (item.NM_CANTIDAD > req.NM_CANTIDAD - req.NM_CANT_DESP && item.FLG_DESP != 'S')
                                //{
                                //    MetodosForm.mensajeInfo("Revisar", "El articulo " + item.DS_NOMBRE + " solo tiene pendiente de despachar " + (req.NM_CANTIDAD - req.NM_CANT_DESP).ToString(), _datasistema);
                                //    return;
                                //}
                            }
                            catch (Exception except)
                            {
                                MetodosForm.mensajeErrorDefault(except.Message, _datasistema);
                                return;
                            }
                        }

                        foreach (var item in lista_deta)
                        {
                            if (item.FLG_PROC != 'S')
                            {
                                INV_ARTICULO art   = (from u in _datasistema.ContextoInventario.INV_ARTICULO where u.ID == item.ID_ARTICULO select u).First();
                                int?         error = 0;
                                string       msj   = string.Empty;
                                if (art.FLG_INVENTARIABLE == 'S')
                                {
                                    _datasistema.ContextoInventario.PR_INV_PROC_DESPACHO(_datasistema.empresa.ID, p.ID_UBICACION_BODEGA, p.NM_EJERCICIO, p.NM_PERIODO, item.ID_ARTICULO, item.NM_CANTIDAD, p.ID, p.ID_TIPO_DOCUMENTO, p.CD_SERIE + p.CD_NUMERO.ToString(), ref error, ref msj);
                                }

                                if (error == 0)
                                {
                                    INV_DETA_AJUS d = (from u in _datasistema.ContextoInventario.INV_DETA_AJUS
                                                       where u.ID == item.ID
                                                       select u).First();
                                    d.FLG_PROC = 'S';
                                    _datasistema.ContextoInventario.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues);
                                    _datasistema.ContextoInventario.SubmitChanges();
                                }
                            }
                        }

                        if ((from u in _datasistema.ContextoInventario.INV_DETA_AJUS
                             where u.ID_AJUS == p.ID && u.FLG_PROC != 'S'
                             select u).Count() > 0)
                        {
                            MetodosForm.mensajeErrorDefault("Hay productos que no salieron", _datasistema);
                            return;
                        }
                        p.CD_ESTA_DOCUMENTO = 'A';
                        _datasistema.ContextoInventario.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues);
                        _datasistema.ContextoInventario.SubmitChanges();
                        consultar();
                        MetodosForm.seleccionarFila(uigridview, "ID", p.ID);
                    }
                }
            }
            catch (Exception ex)
            {
                MetodosForm.mensajeErrorDefault(ex.Message, _datasistema);
            }
        }