Пример #1
0
        private List <in_Ing_Egr_Inven_det_Info> GetDetalle_Ing_Egr_Inven(List <in_transferencia_det_Info> listDetalle, int IdSucursal, int IdBodega, string Signo, DateTime fecha)
        {
            try
            {
                List <in_Ing_Egr_Inven_det_Info> list_IngEgrDet = new List <in_Ing_Egr_Inven_det_Info>();
                foreach (var item in listDetalle.Where(q => q.IdProducto != null).ToList())
                {
                    switch (Signo)
                    {
                    case "-":
                        info_costo = bus_costo.get_UltimoCosto_x_Producto_Bodega(item.IdEmpresa, IdSucursal, IdBodega, item.IdProducto ?? 0, fecha);
                        list_costo_historico.Add(info_costo);
                        break;

                    case "+":
                        info_costo = list_costo_historico.FirstOrDefault(q => q.IdEmpresa == item.IdEmpresa && q.IdProducto == item.IdProducto);
                        break;
                    }
                    in_Ing_Egr_Inven_det_Info info = new in_Ing_Egr_Inven_det_Info();
                    info.IdEmpresa      = item.IdEmpresa;
                    info.IdSucursal     = IdSucursal;
                    info.IdNumMovi      = 0;
                    info.Secuencia      = item.dt_secuencia;
                    info.IdBodega       = IdBodega;
                    info.IdProducto     = item.IdProducto ?? 0;
                    info.dm_cantidad    = item.dt_cantidad;
                    info.dm_observacion = item.tr_Observacion;

                    info.dm_precio = info_costo == null ? 0 : info_costo.costo;

                    info.mv_costo_sinConversion = info_costo == null ? 0 : info_costo.costo;
                    info.mv_costo = info_costo == null ? 0 : info_costo.costo;

                    info.dm_cantidad_sinConversion = item.dt_cantidad;
                    info.dm_cantidad = item.dt_cantidad;

                    info.IdUnidadMedida = item.IdUnidadMedida;
                    info.IdUnidadMedida_sinConversion = item.IdUnidadMedida;

                    info.IdCentroCosto = item.IdCentroCosto;
                    info.IdCentroCosto_sub_centro_costo = item.IdCentroCosto_sub_centro_costo;

                    info.pr_descripcion = item.pr_descripcion;

                    info.IdPunto_cargo       = item.IdPunto_cargo;
                    info.IdPunto_cargo_grupo = item.IdPunto_cargo_grupo;

                    list_IngEgrDet.Add(info);
                }
                return(list_IngEgrDet);
            }
            catch (Exception ex)
            {
                Core.Erp.Info.Log_Exception.LoggingManager.Logger.Log(Core.Erp.Info.Log_Exception.LoggingCategory.Error, ex.Message);
                throw new Core.Erp.Info.Log_Exception.DalException(string.Format("", "GetDetalle_Ing_Egr_Inven", ex.Message), ex)
                      {
                          EntityType = typeof(in_transferencia_bus)
                      };
            }
        }
        private void ProcesoRecosteoInventario(in_Ing_Egr_Inven_Info info)
        {
            try
            {
                foreach (var item in info.listIng_Egr)
                {
                    in_producto_Bus  BusProducto = new in_producto_Bus();
                    in_Producto_Info InfoProdu   = BusProducto.Get_info_Product(info.IdEmpresa, item.IdProducto);
                    item.signo = info.signo;

                    if (item.mv_costo_sinConversion == 0 || item.signo == "-")
                    {
                        in_producto_x_tb_bodega_Costo_Historico_Bus  BusProd_x_Costo     = new in_producto_x_tb_bodega_Costo_Historico_Bus();
                        in_producto_x_tb_bodega_Costo_Historico_Info Info_Produc_x_Costo = new in_producto_x_tb_bodega_Costo_Historico_Info();
                        Info_Produc_x_Costo         = BusProd_x_Costo.get_UltimoCosto_x_Producto_Bodega(item.IdEmpresa, item.IdSucursal, Convert.ToInt32(item.IdBodega), item.IdProducto, info.cm_fecha);
                        item.mv_costo               = Info_Produc_x_Costo.costo;
                        item.mv_costo_sinConversion = Info_Produc_x_Costo.costo;
                    }
                    #region Convierte costo y cantidad en la unidad de consumo
                    ValorEquiv          = 0;
                    InfoUni_Equiv       = busUni_Equiv.Get_Info_in_UnidadMedida_Equiv_conversion(item.IdUnidadMedida_sinConversion, InfoProdu.IdUnidadMedida_Consumo);
                    ValorEquiv          = InfoUni_Equiv.valor_equiv == 0 ? 1 : InfoUni_Equiv.valor_equiv;
                    item.dm_cantidad    = item.dm_cantidad_sinConversion * ValorEquiv;
                    item.mv_costo       = item.signo == "-" ? item.mv_costo_sinConversion : (item.mv_costo_sinConversion * item.dm_cantidad_sinConversion) / item.dm_cantidad;
                    item.IdUnidadMedida = InfoProdu.IdUnidadMedida_Consumo;
                    #endregion
                }
            }
            catch (Exception ex)
            {
                Core.Erp.Info.Log_Exception.LoggingManager.Logger.Log(Core.Erp.Info.Log_Exception.LoggingCategory.Error, ex.Message);
                throw new Core.Erp.Info.Log_Exception.DalException(string.Format("", "ProcesoRecosteoInventario", ex.Message), ex)
                      {
                          EntityType = typeof(in_Ing_Egr_Inven_Bus)
                      };
            }
        }
        public Boolean ModificarDB(in_Ing_Egr_Inven_Info info, ref string msgs)
        {
            try
            {
                in_Ing_Egr_Inven_det_Data dataDet   = new in_Ing_Egr_Inven_det_Data();
                in_Parametro_Bus          busParam  = new in_Parametro_Bus();
                in_Parametro_Info         infoParam = new in_Parametro_Info();
                string IdEstadoAproba_Param         = "";
                infoParam = busParam.Get_Info_Parametro(info.IdEmpresa);
                if (InfoParam.IdEmpresa == 0)
                {
                    return(false);
                }
                if (info.signo == "+")
                {
                    IdEstadoAproba_Param = infoParam.IdEstadoAproba_x_Ing;
                }
                else
                {
                    IdEstadoAproba_Param = infoParam.IdEstadoAproba_x_Egr;
                }

                Boolean res = false;

                if (Validar_objeto_IngEgr(info, ref mensaje))
                {
                    //arreglando los id del detalle en caso q no venga sin id
                    foreach (var item in info.listIng_Egr)
                    {
                        item.IdEmpresa         = info.IdEmpresa;
                        item.IdSucursal        = info.IdSucursal;
                        item.IdNumMovi         = info.IdNumMovi;
                        item.IdMovi_inven_tipo = info.IdMovi_inven_tipo;
                        item.signo             = info.signo;

                        in_producto_Bus  BusProducto = new in_producto_Bus();
                        in_Producto_Info InfoProdu   = BusProducto.Get_info_Product(info.IdEmpresa, item.IdProducto);

                        if (item.IdEstadoAproba == null || item.IdEstadoAproba == "")
                        {
                            if (info.signo == "+")
                            {
                                IdEstadoAproba_Param = infoParam.IdEstadoAproba_x_Ing;
                            }
                            else
                            {
                                IdEstadoAproba_Param = infoParam.IdEstadoAproba_x_Egr;
                            }
                            item.IdEstadoAproba = Get_EstadoApro(Convert.ToInt32(info.IdEmpresa), Convert.ToInt32(info.IdSucursal), Convert.ToInt32(info.IdBodega), IdEstadoAproba_Param);
                        }
                        if (item.IdUnidadMedida_sinConversion == null || item.IdUnidadMedida_sinConversion == "" || item.IdUnidadMedida == null || item.IdUnidadMedida == "")
                        {
                            item.IdUnidadMedida               = InfoProdu.IdUnidadMedida;
                            item.IdUnidadMedida_Consumo       = InfoProdu.IdUnidadMedida_Consumo;
                            item.IdUnidadMedida_sinConversion = InfoProdu.IdUnidadMedida;
                        }
                        if (item.mv_costo_sinConversion == 0 || item.signo == "-")
                        {
                            in_producto_x_tb_bodega_Costo_Historico_Bus  BusProd_x_Costo     = new in_producto_x_tb_bodega_Costo_Historico_Bus();
                            in_producto_x_tb_bodega_Costo_Historico_Info Info_Produc_x_Costo = new in_producto_x_tb_bodega_Costo_Historico_Info();
                            Info_Produc_x_Costo         = BusProd_x_Costo.get_UltimoCosto_x_Producto_Bodega(item.IdEmpresa, item.IdSucursal, Convert.ToInt32(item.IdBodega), item.IdProducto, info.cm_fecha);
                            item.mv_costo               = Info_Produc_x_Costo.costo;
                            item.mv_costo_sinConversion = Info_Produc_x_Costo.costo;
                        }
                        #region Convierte costo y cantidad en la unidad de consumo
                        ValorEquiv          = 0;
                        InfoUni_Equiv       = busUni_Equiv.Get_Info_in_UnidadMedida_Equiv_conversion(item.IdUnidadMedida_sinConversion, InfoProdu.IdUnidadMedida_Consumo);
                        ValorEquiv          = InfoUni_Equiv.valor_equiv == 0 ? 1 : InfoUni_Equiv.valor_equiv;
                        item.dm_cantidad    = item.dm_cantidad_sinConversion * ValorEquiv;
                        item.mv_costo       = item.mv_costo_sinConversion / ValorEquiv;
                        item.IdUnidadMedida = InfoProdu.IdUnidadMedida_Consumo;
                        #endregion
                    }

                    if (dataDet.EliminarDB(info.IdEmpresa, info.IdSucursal, info.IdMovi_inven_tipo, info.IdNumMovi, ref msgs))
                    {
                        info.IdUsuarioUltModi = param.IdUsuario;

                        if (odata.ModificarDB(info, ref msgs))
                        {
                            foreach (var item in info.listIng_Egr)
                            {
                                item.Secuencia      = 0;
                                item.IdEstadoAproba = Get_EstadoApro(Convert.ToInt32(info.IdEmpresa), Convert.ToInt32(info.IdSucursal), Convert.ToInt32(info.IdBodega), IdEstadoAproba_Param);

                                if (item.IdEmpresa == null || item.IdEmpresa == 0)
                                {
                                    item.IdEmpresa = Convert.ToInt32(info.IdEmpresa);
                                }

                                if (item.IdSucursal == null || item.IdSucursal == 0)
                                {
                                    item.IdSucursal = Convert.ToInt32(info.IdSucursal);
                                }

                                if (item.IdBodega == null || item.IdBodega == 0)
                                {
                                    item.IdBodega = Convert.ToInt32(info.IdBodega);
                                }

                                if (item.IdMovi_inven_tipo == null || item.IdMovi_inven_tipo == 0)
                                {
                                    item.IdMovi_inven_tipo = Convert.ToInt32(info.IdMovi_inven_tipo);
                                }

                                if (item.IdNumMovi == null || item.IdNumMovi == 0)
                                {
                                    item.IdNumMovi = Convert.ToInt32(info.IdNumMovi);
                                }
                            }

                            if (dataDet.GuardarDB(info.listIng_Egr))
                            {
                                res = true;
                                res = procesoGenerarMoviInve(info, info.IdNumMovi, ref mensaje);
                            }
                        }
                    }
                }

                return(res);
            }
            catch (Exception ex)
            {
                Core.Erp.Info.Log_Exception.LoggingManager.Logger.Log(Core.Erp.Info.Log_Exception.LoggingCategory.Error, ex.Message);
                throw new Core.Erp.Info.Log_Exception.DalException(string.Format("", "ModificarDB", ex.Message), ex)
                      {
                          EntityType = typeof(in_Ing_Egr_Inven_Bus)
                      };
            }
        }
        public Boolean GuardarDB(in_Ing_Egr_Inven_Info info, ref decimal IdNumMovi, ref string mensaje)
        {
            try
            {
                Boolean res = true;

                InfoParam = busParam.Get_Info_Parametro(info.IdEmpresa);

                if (Validar_objeto_IngEgr(info, ref mensaje))
                {
                    foreach (var item in info.listIng_Egr)
                    {
                        in_producto_Bus  BusProducto = new in_producto_Bus();
                        in_Producto_Info InfoProdu   = BusProducto.Get_info_Product(info.IdEmpresa, item.IdProducto);
                        item.signo = info.signo;

                        if (item.IdEstadoAproba == null || item.IdEstadoAproba == "")
                        {
                            if (info.signo == "+")
                            {
                                IdEstadoAproba_Param = InfoParam.IdEstadoAproba_x_Ing;
                            }
                            else
                            {
                                IdEstadoAproba_Param = InfoParam.IdEstadoAproba_x_Egr;
                            }
                            item.IdEstadoAproba = Get_EstadoApro(Convert.ToInt32(info.IdEmpresa), Convert.ToInt32(info.IdSucursal), Convert.ToInt32(info.IdBodega), IdEstadoAproba_Param);
                        }
                        if (item.IdUnidadMedida_sinConversion == null || item.IdUnidadMedida_sinConversion == "")
                        {
                            item.IdUnidadMedida               = InfoProdu.IdUnidadMedida;
                            item.IdUnidadMedida_Consumo       = InfoProdu.IdUnidadMedida_Consumo;
                            item.IdUnidadMedida_sinConversion = InfoProdu.IdUnidadMedida;
                        }
                        if (/*item.mv_costo_sinConversion == 0 ||*/ item.signo == "-")
                        {
                            in_producto_x_tb_bodega_Costo_Historico_Bus  BusProd_x_Costo     = new in_producto_x_tb_bodega_Costo_Historico_Bus();
                            in_producto_x_tb_bodega_Costo_Historico_Info Info_Produc_x_Costo = new in_producto_x_tb_bodega_Costo_Historico_Info();
                            Info_Produc_x_Costo         = BusProd_x_Costo.get_UltimoCosto_x_Producto_Bodega(item.IdEmpresa, item.IdSucursal, Convert.ToInt32(item.IdBodega), item.IdProducto, info.cm_fecha);
                            item.mv_costo               = Info_Produc_x_Costo.costo;
                            item.mv_costo_sinConversion = Info_Produc_x_Costo.costo;
                        }

                        #region Convierte costo y cantidad en la unidad de consumo
                        ValorEquiv          = 0;
                        InfoUni_Equiv       = busUni_Equiv.Get_Info_in_UnidadMedida_Equiv_conversion(item.IdUnidadMedida_sinConversion, InfoProdu.IdUnidadMedida_Consumo);
                        ValorEquiv          = InfoUni_Equiv.valor_equiv == 0 ? 1 : InfoUni_Equiv.valor_equiv;
                        item.dm_cantidad    = item.dm_cantidad_sinConversion * ValorEquiv;
                        item.mv_costo       = item.signo == "-" ? item.mv_costo_sinConversion : (item.mv_costo_sinConversion * item.dm_cantidad_sinConversion) / item.dm_cantidad;
                        item.IdUnidadMedida = InfoProdu.IdUnidadMedida_Consumo;
                        #endregion
                    }
                    if (res = odata.GuardarDB(info, ref IdNumMovi, ref mensaje))
                    {
                        res = procesoGenerarMoviInve(info, IdNumMovi, ref mensaje);
                    }
                }
                else
                {
                    res = false;
                }

                return(res);
            }
            catch (Exception ex)
            {
                Core.Erp.Info.Log_Exception.LoggingManager.Logger.Log(Core.Erp.Info.Log_Exception.LoggingCategory.Error, ex.Message);
                throw new Core.Erp.Info.Log_Exception.DalException(string.Format("", "GuardarDB", ex.Message), ex)
                      {
                          EntityType = typeof(in_Ing_Egr_Inven_Bus)
                      };
            }
        }
Пример #5
0
        private bool Generar_info_ing_egr(in_ajusteFisico_Info info_ajuste, ref decimal IdNumMovi_ing, ref decimal IdNumMovi_egr)
        {
            try
            {
                in_Ing_Egr_Inven_Info info_ing_egr = new in_Ing_Egr_Inven_Info();

                bool HayIngresos = false;
                bool HayEgresos  = false;

                var TIngreso = (from q in info_ajuste.list_det_AjusteFisico
                                where q.CantidadAjustada > 0
                                select q).Count();


                var TEgresos = (from q in info_ajuste.list_det_AjusteFisico
                                where q.CantidadAjustada < 0
                                select q).Count();


                HayIngresos = (Convert.ToDouble(TIngreso) > 0) ? true : false;

                #region HayIngreso

                if (HayIngresos == true)
                {
                    info_ing_egr = new in_Ing_Egr_Inven_Info();

                    info_ing_egr.IdEmpresa         = info_ajuste.IdEmpresa;
                    info_ing_egr.IdSucursal        = info_ajuste.IdSucursal;
                    info_ing_egr.IdBodega          = info_ajuste.IdBodega;
                    info_ing_egr.IdMovi_inven_tipo = info_ajuste.IdMovi_inven_tipo_Ing;
                    info_ing_egr.signo             = "+";
                    info_ing_egr.cm_observacion    = info_ajuste.Observacion;
                    info_ing_egr.IdUsuario         = info_ajuste.IdUsuario;
                    info_ing_egr.nom_pc            = info_ajuste.nom_pc;
                    info_ing_egr.ip           = info_ajuste.ip;
                    info_ing_egr.Estado       = "A";
                    info_ing_egr.cm_fecha     = info_ajuste.Fecha;
                    info_ing_egr.CodMoviInven = "AJU";
                    info_ing_egr.IdMotivo_Inv = 1;

                    /// obteniendo el detalle del movimiento de invetario
                    var SelectDetMoviIng = from q in info_ajuste.list_det_AjusteFisico
                                           where q.CantidadAjustada > 0
                                           select q;
                    int c = 1;
                    foreach (var item in SelectDetMoviIng)
                    {
                        info_costo_historico = bus_costo_historico.get_UltimoCosto_x_Producto_Bodega(info_ajuste.IdEmpresa, info_ajuste.IdSucursal, info_ajuste.IdBodega, item.IdProducto, info_ing_egr.cm_fecha);


                        in_Ing_Egr_Inven_det_Info detMovInfo = new in_Ing_Egr_Inven_det_Info();
                        //detMovInfo.dm_peso = item.p;
                        detMovInfo.dm_cantidad = Convert.ToDouble(item.CantidadAjustada);
                        detMovInfo.dm_cantidad_sinConversion = Convert.ToDouble(item.CantidadAjustada);
                        detMovInfo.IdProducto        = item.IdProducto;
                        detMovInfo.Secuencia         = c;
                        detMovInfo.IdEmpresa         = info_ajuste.IdEmpresa;
                        detMovInfo.IdBodega          = info_ing_egr.IdBodega;
                        detMovInfo.IdSucursal        = info_ing_egr.IdSucursal;
                        detMovInfo.IdMovi_inven_tipo = info_ing_egr.IdMovi_inven_tipo;
                        detMovInfo.IdNumMovi         = 0;//Nuevo
                        detMovInfo.signo             = info_ing_egr.signo;
                        detMovInfo.dm_observacion    = info_ajuste.Observacion;
                        //Costo historico
                        detMovInfo.mv_costo = info_costo_historico.costo;
                        detMovInfo.mv_costo_sinConversion = info_costo_historico.costo;
                        detMovInfo.IdCentroCosto          = item.IdCentroCosto;
                        info_ing_egr.listIng_Egr.Add(detMovInfo);
                        c++;
                    }
                    bus_ing_egr.GuardarDB(info_ing_egr, ref IdNumMovi_ing, ref mensaje);
                }


                #endregion
                #region HayEgreso
                HayEgresos = (Convert.ToDouble(TEgresos) > 0) ? true : false;

                if (HayEgresos == true)
                {
                    info_ing_egr = new in_Ing_Egr_Inven_Info();

                    info_ing_egr.IdEmpresa         = info_ajuste.IdEmpresa;
                    info_ing_egr.IdSucursal        = info_ajuste.IdSucursal;
                    info_ing_egr.IdBodega          = info_ajuste.IdBodega;
                    info_ing_egr.IdMovi_inven_tipo = info_ajuste.IdMovi_inven_tipo_Egr;
                    info_ing_egr.signo             = "-";
                    info_ing_egr.cm_observacion    = info_ajuste.Observacion;
                    info_ing_egr.IdUsuario         = info_ajuste.IdUsuario;
                    info_ing_egr.nom_pc            = info_ajuste.nom_pc;
                    info_ing_egr.ip           = info_ajuste.ip;
                    info_ing_egr.Estado       = "A";
                    info_ing_egr.cm_fecha     = info_ajuste.Fecha;
                    info_ing_egr.CodMoviInven = "AJU";
                    info_ing_egr.IdMotivo_Inv = 1;
                    /// encontrando el detalle de inventario
                    ///
                    var SelectDetMoviEgre = from q in info_ajuste.list_det_AjusteFisico
                                            where q.CantidadAjustada < 0
                                            select q;

                    int c = 1;

                    foreach (var item in SelectDetMoviEgre)
                    {
                        info_costo_historico = bus_costo_historico.get_UltimoCosto_x_Producto_Bodega(info_ajuste.IdEmpresa, info_ajuste.IdSucursal, info_ajuste.IdBodega, item.IdProducto, info_ing_egr.cm_fecha);

                        in_Ing_Egr_Inven_det_Info detMovInfo = new in_Ing_Egr_Inven_det_Info();
                        detMovInfo.IdEmpresa         = info_ing_egr.IdEmpresa;
                        detMovInfo.IdBodega          = info_ing_egr.IdBodega;
                        detMovInfo.IdSucursal        = info_ing_egr.IdSucursal;
                        detMovInfo.IdMovi_inven_tipo = info_ing_egr.IdMovi_inven_tipo;
                        detMovInfo.IdNumMovi         = 0;//Nuevo
                        //detMovInfo.peso = item.pr_peso;
                        detMovInfo.Secuencia = c;
                        c++;
                        detMovInfo.signo       = info_ing_egr.signo;
                        detMovInfo.IdProducto  = item.IdProducto;
                        detMovInfo.dm_cantidad = Convert.ToDouble(item.CantidadAjustada) * -1;
                        detMovInfo.dm_cantidad_sinConversion = Convert.ToDouble(item.CantidadAjustada) * -1;
                        detMovInfo.dm_observacion            = info_ing_egr.cm_observacion;
                        //Costo historico
                        detMovInfo.mv_costo = info_costo_historico.costo;
                        detMovInfo.mv_costo_sinConversion = info_costo_historico.costo;
                        detMovInfo.IdCentroCosto          = item.IdCentroCosto;

                        info_ing_egr.listIng_Egr.Add(detMovInfo);
                    }
                    bus_ing_egr.GuardarDB(info_ing_egr, ref IdNumMovi_egr, ref mensaje);
                }
                #endregion

                return(true);
            }
            catch (Exception ex)
            {
                Core.Erp.Info.Log_Exception.LoggingManager.Logger.Log(Core.Erp.Info.Log_Exception.LoggingCategory.Error, ex.Message);
                throw new Core.Erp.Info.Log_Exception.DalException(string.Format("", "Armar_info_ing_egr", ex.Message), ex)
                      {
                          EntityType = typeof(in_AjusteFisico_Bus)
                      };
            }
        }