public Boolean procesoGenerarMoviInve(in_Ing_Egr_Inven_Info info, decimal IdNumMovi, ref string mensajeError) { try { Boolean res = true; string IdEstadoAproba_Param = ""; string IdEstadoAproba = ""; in_Parametro_Bus busParam = new in_Parametro_Bus(); in_Parametro_Info infoParam = new in_Parametro_Info(); infoParam = busParam.Get_Info_Parametro(info.IdEmpresa); if (info.signo == "+") { IdEstadoAproba_Param = infoParam.IdEstadoAproba_x_Ing; } else { IdEstadoAproba_Param = infoParam.IdEstadoAproba_x_Egr; } //Recosteo ProcesoRecosteoInventario(info); var query = from bod in info.listIng_Egr group bod by bod.IdBodega into grupoBodega orderby grupoBodega.Key select grupoBodega; if (query.Count() > 1) { // Varias bodegas foreach (var grupoBodega in query) { // Detalle List <in_Ing_Egr_Inven_det_Info> list_IngEgrDet = new List <in_Ing_Egr_Inven_det_Info>(); foreach (var bod in grupoBodega) { in_Ing_Egr_Inven_det_Info infoDet = new in_Ing_Egr_Inven_det_Info(); //prueba infoDet.IdEmpresa = bod.IdEmpresa; infoDet.IdSucursal = bod.IdSucursal; infoDet.IdNumMovi = bod.IdNumMovi; infoDet.Secuencia = bod.Secuencia; //prueba infoDet.IdBodega = bod.IdBodega; infoDet.IdProducto = bod.IdProducto; infoDet.dm_cantidad = bod.dm_cantidad; infoDet.dm_observacion = bod.dm_observacion; infoDet.mv_costo = bod.mv_costo; infoDet.IdCentroCosto = bod.IdCentroCosto; infoDet.IdCentroCosto_sub_centro_costo = bod.IdCentroCosto_sub_centro_costo; infoDet.pr_descripcion = bod.pr_descripcion; infoDet.IdPunto_cargo = bod.IdPunto_cargo; infoDet.IdUnidadMedida = bod.IdUnidadMedida; infoDet.IdPunto_cargo_grupo = bod.IdPunto_cargo_grupo; infoDet.IdMotivo_Inv = bod.IdMotivo_Inv; if (bod.IdEstadoAproba == null) { infoDet.IdEstadoAproba = Get_EstadoApro(bod.IdEmpresa, bod.IdSucursal, Convert.ToInt32(bod.IdBodega), IdEstadoAproba_Param); } else { infoDet.IdEstadoAproba = bod.IdEstadoAproba; } if (infoDet.IdEstadoAproba == Cl_Enumeradores.eEstadoAprobacion_Ing_Egr.PEND.ToString()) { infoDet.Motivo_Aprobacion = null; } else { infoDet.Motivo_Aprobacion = (bod.Motivo_Aprobacion == null) ? "APROBADO POR SISTEMAS" : bod.Motivo_Aprobacion; } infoDet.IdUnidadMedida_sinConversion = bod.IdUnidadMedida_sinConversion; infoDet.mv_costo_sinConversion = bod.mv_costo_sinConversion; infoDet.dm_cantidad_sinConversion = bod.dm_cantidad_sinConversion; list_IngEgrDet.Add(infoDet); } //cabecera in_Ing_Egr_Inven_Info info_IngEgr = new in_Ing_Egr_Inven_Info(); info_IngEgr.IdEmpresa = info.IdEmpresa; info_IngEgr.IdNumMovi = info.IdNumMovi; info_IngEgr.IdSucursal = info.IdSucursal; info_IngEgr.IdBodega = info.IdBodega; info_IngEgr.CodMoviInven = info.CodMoviInven; info_IngEgr.cm_observacion = info.cm_observacion; info_IngEgr.IdMovi_inven_tipo = info.IdMovi_inven_tipo; info_IngEgr.cm_fecha = info.cm_fecha; info_IngEgr.IdUsuario = info.IdUsuario; info_IngEgr.nom_pc = info.nom_pc; info_IngEgr.ip = info.ip; info_IngEgr.Fecha_Transac = info.Fecha_Transac; info_IngEgr.signo = info.signo; info_IngEgr.IdMotivo_Inv = info.IdMotivo_Inv; info_IngEgr.listIng_Egr = list_IngEgrDet;//asignando el detalle res = Genera_Inventario(info_IngEgr, ref IdNumMovi, ref mensaje); } } else { IdEstadoAproba = Get_EstadoApro(Convert.ToInt32(info.IdEmpresa), Convert.ToInt32(info.IdSucursal), Convert.ToInt32(info.IdBodega), IdEstadoAproba_Param); foreach (var item in info.listIng_Egr) { if (item.IdEstadoAproba == null) { item.IdEstadoAproba = IdEstadoAproba; } if (item.IdEstadoAproba == Cl_Enumeradores.eEstadoAprobacion_Ing_Egr.PEND.ToString()) { item.Motivo_Aprobacion = null; } else { item.Motivo_Aprobacion = (item.Motivo_Aprobacion == null) ? "APROBADO POR SISTEMAS" : item.Motivo_Aprobacion; } } //una bodega res = Genera_Inventario(info, ref 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("", "procesoGenerarMoviInve", 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_devolucion_inven_Info info, ref decimal IdDev_Inven, ref string mensaje) { Boolean Respuesta = false; try { int c = 0; Respuesta = oDat.GuardarDB(info, ref IdDev_Inven, ref mensaje); if (Respuesta) { c = 0; foreach (var item in info.lista_detalle) { item.IdDev_Inven = IdDev_Inven; c++; item.secuencia = c; } in_devolucion_inven_det_Bus BusDev_inv_det = new in_devolucion_inven_det_Bus(); Respuesta = BusDev_inv_det.GuardarDB(info.lista_detalle, ref mensaje); in_Parametro_Bus BusParametro = new in_Parametro_Bus(); in_Parametro_Info InfoParametro = new in_Parametro_Info(); InfoParametro = BusParametro.Get_Info_Parametro(info.IdEmpresa); in_movi_inven_tipo_Info InfoMovi_tipo = new in_movi_inven_tipo_Info(); in_movi_inven_tipo_Bus BusMovi_tipo = new in_movi_inven_tipo_Bus(); InfoMovi_tipo = BusMovi_tipo.Get_Info_movi_inven_tipo(info.IdEmpresa, info.IdMovi_inven_tipo); // in_movi_inve_Bus BusMovi_Inven = new in_movi_inve_Bus(); // in_movi_inve_Info InfoMovi_Inven = new in_movi_inve_Info(); //InfoMovi_Inven = BusMovi_Inven.Get_Info_Movi_inven(info.IdEmpresa, info.IdSucursal_movi_inven, info.IdBodega_movi_inven, info.IdMovi_inven_tipo, info.IdNumMovi); in_Ing_Egr_Inven_Bus Bus_Ing_Egre = new in_Ing_Egr_Inven_Bus(); in_Ing_Egr_Inven_Info Info_Ing_Egr = new in_Ing_Egr_Inven_Info(); Info_Ing_Egr = Bus_Ing_Egre.Get_Info_Ing_Egr_Inven(info.IdEmpresa, info.IdSucursal_movi_inven, info.IdMovi_inven_tipo, info.IdNumMovi); Info_Ing_Egr.IdNumMovi = 0; Info_Ing_Egr.IdMotivo_Inv = 1; if (InfoMovi_tipo.cm_tipo_movi == "-")// si es positivo hacer un egreso { Info_Ing_Egr.IdMovi_inven_tipo = Convert.ToInt32(InfoParametro.IdMovi_Inven_tipo_x_Dev_Inv_x_Erg); Info_Ing_Egr.signo = "+"; } else { Info_Ing_Egr.IdMovi_inven_tipo = Convert.ToInt32(InfoParametro.IdMovi_Inven_tipo_x_Dev_Inv_x_Ing); Info_Ing_Egr.signo = "-"; } Info_Ing_Egr.CodMoviInven = ""; Info_Ing_Egr.cm_observacion = "Ing x Dev/Inv. " + info.observacion; Info_Ing_Egr.cm_fecha = info.Fecha.Date;//La fecha de devolución Info_Ing_Egr.IdUsuario = param.IdUsuario; Info_Ing_Egr.Estado = "A"; c = 0; foreach (var item in info.lista_detalle) { c = c + 1; in_movi_inve_detalle_Info info_det_movi = new in_movi_inve_detalle_Info(); in_movi_inve_detalle_Bus bus_det_movi = new in_movi_inve_detalle_Bus(); info_det_movi = bus_det_movi.Get_info_Movi_inven_det(item.IdEmpresa_movi_inv, item.IdSucursal_movi_inv, item.IdBodega_movi_inv, item.IdMovi_inven_tipo_movi_inv, item.IdNumMovi_movi_inv, item.Secuencia_movi_inv); in_Ing_Egr_Inven_det_Info InfoDet_Ing_Egr = new in_Ing_Egr_Inven_det_Info(); InfoDet_Ing_Egr.IdEmpresa = item.IdEmpresa; InfoDet_Ing_Egr.IdSucursal = item.IdSucursal_movi_inv; InfoDet_Ing_Egr.IdNumMovi = 0; InfoDet_Ing_Egr.Secuencia = c; InfoDet_Ing_Egr.IdBodega = item.IdBodega_movi_inv; InfoDet_Ing_Egr.IdProducto = info_det_movi.IdProducto; if (Info_Ing_Egr.signo == "+")// si es positivo hacer un egreso { InfoDet_Ing_Egr.dm_cantidad_sinConversion = Math.Abs(item.cantidad_a_devolver); InfoDet_Ing_Egr.dm_cantidad = Math.Abs(item.cantidad_a_devolver); InfoDet_Ing_Egr.IdEstadoAproba = "APRO";//Debe ir directamente aprobado para poder vincularlo al ing/egr que se va a devolver por cuestiones del recosteo } else { InfoDet_Ing_Egr.dm_cantidad_sinConversion = Math.Abs(item.cantidad_a_devolver); InfoDet_Ing_Egr.dm_cantidad = Math.Abs(item.cantidad_a_devolver) * -1; InfoDet_Ing_Egr.IdEstadoAproba = "APRO";//Debe ir directamente aprobado para poder vincularlo al ing/egr que se va a devolver por cuestiones del recosteo } //Se pasa directamente el costo y unidad de medida convertido InfoDet_Ing_Egr.mv_costo_sinConversion = (info_det_movi.mv_costo == null) ? 0 : Convert.ToDouble(info_det_movi.mv_costo); InfoDet_Ing_Egr.mv_costo = (info_det_movi.mv_costo == null) ? 0 : Convert.ToDouble(info_det_movi.mv_costo); InfoDet_Ing_Egr.IdUnidadMedida = info_det_movi.IdUnidadMedida; InfoDet_Ing_Egr.IdUnidadMedida_Consumo = info_det_movi.IdUnidadMedida; InfoDet_Ing_Egr.IdUnidadMedida_sinConversion = info_det_movi.IdUnidadMedida; //Ingreso los id del detalle que esta devolviendo InfoDet_Ing_Egr.IdEmpresa_dev = item.IdEmpresa_movi_inv; InfoDet_Ing_Egr.IdSucursal_dev = item.IdSucursal_movi_inv; InfoDet_Ing_Egr.IdBodega_dev = item.IdBodega_movi_inv; InfoDet_Ing_Egr.IdMovi_inven_tipo_dev = item.IdMovi_inven_tipo_movi_inv; InfoDet_Ing_Egr.IdNumMovi_dev = item.IdNumMovi_movi_inv; InfoDet_Ing_Egr.Secuencia_dev = item.Secuencia_movi_inv; //Campos de egresos InfoDet_Ing_Egr.IdPunto_cargo = info_det_movi.IdPunto_Cargo; InfoDet_Ing_Egr.IdPunto_cargo_grupo = info_det_movi.IdPunto_cargo_grupo; InfoDet_Ing_Egr.IdCentroCosto = info_det_movi.IdCentroCosto; InfoDet_Ing_Egr.IdCentroCosto_sub_centro_costo = info_det_movi.IdCentroCosto_sub_centro_costo; Info_Ing_Egr.listIng_Egr.Add(InfoDet_Ing_Egr); } decimal IdNumMovi = 0; Respuesta = Bus_Ing_Egre.GuardarDB(Info_Ing_Egr, ref IdNumMovi, ref mensaje); } return(Respuesta); } 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_devolucion_inven_Bus) }; } }