public bool guardarDB(in_Ing_Egr_Inven_det_Info info)
        {
            try
            {
                using (Entities_inventario Context = new Entities_inventario())
                {
                    in_Ing_Egr_Inven_det Entity = new in_Ing_Egr_Inven_det
                    {
                        IdEmpresa         = info.IdEmpresa,
                        IdSucursal        = info.IdSucursal,
                        IdMovi_inven_tipo = info.IdMovi_inven_tipo,
                        IdNumMovi         = info.IdNumMovi,
                        Secuencia         = info.Secuencia,
                        IdBodega          = info.IdBodega,
                        IdProducto        = info.IdProducto,

                        IdCentroCosto = info.IdCentroCosto,
                        IdCentroCosto_sub_centro_costo = info.IdCentroCosto_sub_centro_costo,
                        IdPunto_cargo       = info.IdPunto_cargo,
                        IdPunto_cargo_grupo = info.IdPunto_cargo_grupo,

                        dm_observacion    = info.dm_observacion,
                        IdMotivo_Inv      = info.IdMotivo_Inv,
                        IdEstadoAproba    = info.IdEstadoAproba,
                        Motivo_Aprobacion = info.Motivo_Aprobacion,

                        IdEmpresa_oc  = info.IdEmpresa_oc,
                        IdSucursal_oc = info.IdSucursal_oc,
                        IdOrdenCompra = info.IdOrdenCompra,
                        Secuencia_oc  = info.Secuencia_oc,

                        IdEmpresa_inv         = info.IdEmpresa_inv,
                        IdSucursal_inv        = info.IdSucursal_inv,
                        IdBodega_inv          = info.IdBodega_inv,
                        IdMovi_inven_tipo_inv = info.IdMovi_inven_tipo_inv,
                        IdNumMovi_inv         = info.IdNumMovi_inv,
                        secuencia_inv         = info.secuencia_inv,

                        dm_cantidad_sinConversion = info.dm_cantidad_sinConversion,
                        dm_cantidad = info.dm_cantidad = info.dm_cantidad_sinConversion,                  //
                        IdUnidadMedida_sinConversion = info.IdUnidadMedida_sinConversion,
                        IdUnidadMedida         = info.IdUnidadMedida = info.IdUnidadMedida_sinConversion, //
                        mv_costo_sinConversion = info.mv_costo_sinConversion,
                        mv_costo = info.mv_costo = (double)info.mv_costo_sinConversion                    //,
                    };
                    Context.in_Ing_Egr_Inven_det.Add(Entity);
                    Context.SaveChanges();
                }
                return(true);
            }
            catch (Exception)
            {
                throw;
            }
        }
        public in_Ing_Egr_Inven_det_Info get_info(int IdEmpresa, int IdSucursal, int IdMovi_inven_tipo, decimal IdNumMovi)
        {
            try
            {
                in_Ing_Egr_Inven_det_Info info = new in_Ing_Egr_Inven_det_Info();
                using (Entities_inventario Context = new Entities_inventario())
                {
                    in_Ing_Egr_Inven_det Entity = Context.in_Ing_Egr_Inven_det.FirstOrDefault(q => q.IdEmpresa == IdEmpresa && q.IdSucursal == IdSucursal && q.IdMovi_inven_tipo == IdMovi_inven_tipo && q.IdNumMovi == IdNumMovi);
                    if (Entity == null)
                    {
                        return(null);
                    }
                    info = new in_Ing_Egr_Inven_det_Info
                    {
                        IdEmpresa           = Entity.IdEmpresa,
                        IdSucursal          = Entity.IdSucursal,
                        IdMovi_inven_tipo   = Entity.IdMovi_inven_tipo,
                        IdNumMovi           = Entity.IdNumMovi,
                        IdBodega            = Entity.IdBodega,
                        dm_cantidad         = Entity.dm_cantidad,
                        dm_observacion      = Entity.dm_observacion,
                        IdMotivo_Inv        = Entity.IdMotivo_Inv,
                        IdEstadoAproba      = Entity.IdEstadoAproba,
                        IdOrdenCompra       = Entity.IdOrdenCompra,
                        IdProducto          = Entity.IdProducto,
                        IdUnidadMedida      = Entity.IdUnidadMedida,
                        IdPunto_cargo       = Entity.IdPunto_cargo,
                        IdPunto_cargo_grupo = Entity.IdPunto_cargo_grupo,
                        mv_costo            = Entity.mv_costo,
                        Secuencia           = Entity.Secuencia,

                        IdSucursal_inv               = Entity.IdSucursal_inv,
                        IdSucursal_oc                = Entity.IdSucursal_oc,
                        IdEmpresa_inv                = Entity.IdEmpresa_inv,
                        IdEmpresa_oc                 = Entity.IdEmpresa_oc,
                        IdBodega_inv                 = Entity.IdBodega_inv,
                        IdMovi_inven_tipo_inv        = Entity.IdMovi_inven_tipo_inv,
                        IdNumMovi_inv                = Entity.IdNumMovi_inv,
                        dm_cantidad_sinConversion    = Entity.dm_cantidad_sinConversion,
                        IdUnidadMedida_sinConversion = Entity.IdUnidadMedida_sinConversion,
                        mv_costo_sinConversion       = Entity.mv_costo_sinConversion,
                        secuencia_inv                = Entity.secuencia_inv,
                        Secuencia_oc                 = Entity.Secuencia_oc
                    };
                }
                return(info);
            }
            catch (Exception)
            {
                throw;
            }
        }
        public bool guardarDB(in_Ing_Egr_Inven_Info info, string signo)
        {
            try
            {
                int sec = 1;
                using (Entities_inventario Context = new Entities_inventario())
                {
                    in_Ing_Egr_Inven Entity = new in_Ing_Egr_Inven
                    {
                        IdEmpresa         = info.IdEmpresa,
                        IdSucursal        = info.IdSucursal,
                        IdMovi_inven_tipo = info.IdMovi_inven_tipo,
                        IdNumMovi         = info.IdNumMovi = get_id(info.IdEmpresa, info.IdSucursal, info.IdMovi_inven_tipo),
                        IdBodega          = info.IdBodega,
                        IdMotivo_Inv      = info.IdMotivo_Inv,
                        cm_fecha          = info.cm_fecha.Date,
                        cm_observacion    = info.cm_observacion,
                        CodMoviInven      = info.CodMoviInven,
                        Estado            = info.Estado = "A",
                        IdResponsable     = info.IdResponsable,
                        signo             = info.signo,

                        IdUsuario     = info.IdUsuario,
                        Fecha_Transac = DateTime.Now
                    };
                    Context.in_Ing_Egr_Inven.Add(Entity);

                    foreach (var item in info.lst_in_Ing_Egr_Inven_det)
                    {
                        if (signo == "-")
                        {
                            item.mv_costo_sinConversion = data_costo.get_ultimo_costo(info.IdEmpresa, info.IdSucursal, Convert.ToInt32(info.IdBodega), item.IdProducto, info.cm_fecha);
                        }
                        in_Ing_Egr_Inven_det entity_det = new in_Ing_Egr_Inven_det
                        {
                            IdEmpresa         = info.IdEmpresa,
                            IdSucursal        = info.IdSucursal,
                            IdMovi_inven_tipo = info.IdMovi_inven_tipo,
                            IdNumMovi         = info.IdNumMovi,
                            Secuencia         = item.Secuencia = sec,
                            IdBodega          = (int)info.IdBodega,
                            IdProducto        = item.IdProducto,

                            IdCentroCosto = item.IdCentroCosto,
                            IdCentroCosto_sub_centro_costo = item.IdCentroCosto_sub_centro_costo,
                            IdPunto_cargo       = item.IdPunto_cargo,
                            IdPunto_cargo_grupo = item.IdPunto_cargo_grupo,

                            dm_observacion    = item.dm_observacion,
                            IdMotivo_Inv      = info.IdMotivo_Inv,
                            IdEstadoAproba    = "APRO",
                            Motivo_Aprobacion = item.Motivo_Aprobacion,

                            IdEmpresa_oc  = item.IdEmpresa_oc,
                            IdSucursal_oc = item.IdSucursal_oc,
                            IdOrdenCompra = item.IdOrdenCompra,
                            Secuencia_oc  = item.Secuencia_oc,

                            IdEmpresa_inv         = item.IdEmpresa_inv,
                            IdSucursal_inv        = item.IdSucursal_inv,
                            IdBodega_inv          = item.IdBodega_inv,
                            IdMovi_inven_tipo_inv = item.IdMovi_inven_tipo_inv,
                            IdNumMovi_inv         = item.IdNumMovi_inv,
                            secuencia_inv         = item.secuencia_inv,

                            dm_cantidad_sinConversion    = Math.Abs(item.dm_cantidad_sinConversion) * (info.signo == "-" ? -1 : 1),
                            IdUnidadMedida_sinConversion = (item.IdUnidadMedida_sinConversion) == null ? "UNID" : item.IdUnidadMedida_sinConversion,
                            mv_costo_sinConversion       = item.mv_costo_sinConversion,

                            IdUnidadMedida = (item.IdUnidadMedida) == null ? "UNID" : item.IdUnidadMedida,
                            dm_cantidad    = Math.Abs(item.dm_cantidad_sinConversion) * (info.signo == "-" ? -1 : 1),
                            mv_costo       = item.mv_costo_sinConversion,
                        };
                        Context.in_Ing_Egr_Inven_det.Add(entity_det);
                        sec++;
                    }
                    Context.SaveChanges();

                    // ejecutando el sp para in_movi_det
                    Context.spINV_aprobacion_ing_egr(info.IdEmpresa, info.IdSucursal, info.IdBodega, info.IdMovi_inven_tipo, info.IdNumMovi);
                }
                Contabilizar(info.IdEmpresa, info.IdSucursal, info.IdMovi_inven_tipo, info.IdNumMovi, info.cm_observacion, info.cm_fecha);
                return(true);
            }
            catch (Exception)
            {
                throw;
            }
        }
Example #4
0
        public bool Aprobar(int IdEmpresa, List <tbl_movimientos_det_Info> Lista, string IdUsuario)
        {
            Entities_mobileSCI db_mobile = new Entities_mobileSCI();
            EntitiesInventario db_inv    = new EntitiesInventario();

            try
            {
                var Entity_p = db_inv.in_parametro.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                if (Entity_p == null || Entity_p.IdMovi_inven_tipo_mobile_ing == null || Entity_p.IdMovi_inven_tipo_mobile_egr == null)
                {
                    return(false);
                }

                var Entity_motivo_ing = db_inv.in_Motivo_Inven.Where(q => q.IdEmpresa == IdEmpresa && q.Tipo_Ing_Egr == "ING" && q.Genera_Movi_Inven == "S").FirstOrDefault();
                if (Entity_motivo_ing == null)
                {
                    return(false);
                }

                var Entity_motivo_egr = db_inv.in_Motivo_Inven.Where(q => q.IdEmpresa == IdEmpresa && q.Tipo_Ing_Egr == "EGR" && q.Genera_Movi_Inven == "S" && q.es_Inven_o_Consumo == "TIC_CONSU").FirstOrDefault();
                if (Entity_motivo_egr == null)
                {
                    return(false);
                }

                #region Ingresos
                var lst_mov_agrupada = (from q in Lista
                                        where q.cantidad > 0
                                        group new { q.IdEmpresa, q.IdSucursal, q.IdBodega, q.Fecha, q.IdSucursal_oc, q.IdOrdenCompra } by new { q.IdEmpresa, q.IdSucursal, q.IdBodega, q.Fecha, q.IdSucursal_oc, q.IdOrdenCompra } into g
                                        select new tbl_movimientos_det_Info
                {
                    IdEmpresa = g.Key.IdEmpresa,
                    IdSucursal = g.Key.IdSucursal,
                    IdBodega = g.Key.IdBodega,
                    Fecha = g.Key.Fecha,
                    IdSucursal_oc = g.Key.IdSucursal_oc,
                    IdOrdenCompra = g.Key.IdOrdenCompra,
                }).ToList();

                foreach (var item in lst_mov_agrupada)
                {
                    #region Cabecera
                    in_Ing_Egr_Inven Entity_cab = new in_Ing_Egr_Inven
                    {
                        IdEmpresa         = item.IdEmpresa,
                        IdSucursal        = item.IdSucursal,
                        IdMovi_inven_tipo = Convert.ToInt32(Entity_p.IdMovi_inven_tipo_mobile_ing),
                        IdNumMovi         = get_id(item.IdEmpresa, item.IdSucursal, Convert.ToInt32(Entity_p.IdMovi_inven_tipo_mobile_ing)),
                        IdBodega          = item.IdBodega,
                        signo             = "+",
                        CodMoviInven      = "MOBILE",
                        cm_observacion    = "Aprobación móvil " + DateTime.Now.ToString("dd/MM/yyyy"),
                        cm_fecha          = item.Fecha,
                        Estado            = "A",
                        IdMotivo_Inv      = Entity_motivo_ing.IdMotivo_Inv,
                        IdUsuario         = IdUsuario,
                        Fecha_Transac     = DateTime.Now
                    };
                    db_inv.in_Ing_Egr_Inven.Add(Entity_cab);
                    #endregion
                    #region Detalle
                    int sec = 1;
                    foreach (var mov in Lista.Where(q => q.IdEmpresa == item.IdEmpresa && q.IdSucursal == item.IdSucursal && q.IdBodega == item.IdBodega && q.Fecha == item.Fecha && q.IdSucursal_oc == item.IdSucursal_oc && q.IdOrdenCompra == item.IdOrdenCompra && q.cantidad > 0).ToList())
                    {
                        in_Ing_Egr_Inven_det Entity_det = new in_Ing_Egr_Inven_det
                        {
                            IdEmpresa         = Entity_cab.IdEmpresa,
                            IdSucursal        = Entity_cab.IdSucursal,
                            IdMovi_inven_tipo = Entity_cab.IdMovi_inven_tipo,
                            IdNumMovi         = Entity_cab.IdNumMovi,
                            Secuencia         = sec++,
                            IdBodega          = mov.IdBodega,
                            IdProducto        = mov.IdProducto,
                            dm_cantidad       = mov.cantidad,
                            dm_stock_actu     = 0,
                            dm_stock_ante     = 0,
                            dm_observacion    = "",
                            dm_precio         = 0,
                            mv_costo          = mov.do_precioFinal,
                            dm_peso           = 0,
                            IdCentroCosto     = null,
                            IdCentroCosto_sub_centro_costo = null,
                            IdEstadoAproba               = "PEND",
                            IdUnidadMedida               = mov.IdUnidadMedida,
                            IdEmpresa_oc                 = mov.IdEmpresa_oc,
                            IdSucursal_oc                = mov.IdSucursal_oc,
                            IdOrdenCompra                = mov.IdOrdenCompra,
                            Secuencia_oc                 = mov.secuencia_oc,
                            Motivo_Aprobacion            = "Aprobación movil",
                            dm_cantidad_sinConversion    = mov.cantidad,
                            IdUnidadMedida_sinConversion = mov.IdUnidadMedida,
                            mv_costo_sinConversion       = mov.do_precioFinal,
                            IdMotivo_Inv                 = null
                        };
                        db_inv.in_Ing_Egr_Inven_det.Add(Entity_det);

                        tbl_movimientos_det_apro Entity_apro = new tbl_movimientos_det_apro
                        {
                            IdSincronizacion  = mov.IdSincronizacion,
                            IdSecuencia       = mov.IdSecuencia,
                            IdEmpresa         = mov.IdEmpresa,
                            IdSucursal        = mov.IdSucursal,
                            IdMovi_inven_tipo = Entity_cab.IdMovi_inven_tipo,
                            IdNumMovi         = Entity_cab.IdNumMovi,
                            Secuencia         = Entity_det.Secuencia
                        };
                        db_mobile.tbl_movimientos_det_apro.Add(Entity_apro);

                        var Entity_sinc = db_mobile.tbl_movimientos_det.Where(q => q.IdSincronizacion == mov.IdSincronizacion && q.IdSecuencia == mov.IdSecuencia).FirstOrDefault().Aprobado = true;
                    }
                    #endregion
                    db_inv.SaveChanges();
                    db_mobile.SaveChanges();
                    db_inv.spINV_aprobacion_movimiento(Entity_cab.IdEmpresa, Entity_cab.IdSucursal, Entity_cab.IdMovi_inven_tipo, Entity_cab.IdBodega, Entity_cab.IdNumMovi);
                }
                #endregion

                #region Egresos
                lst_mov_agrupada = (from q in Lista
                                    where q.cantidad < 0
                                    group new { q.IdEmpresa, q.IdSucursal, q.IdBodega, q.Fecha } by new { q.IdEmpresa, q.IdSucursal, q.IdBodega, q.Fecha } into g
                                    select new tbl_movimientos_det_Info
                {
                    IdEmpresa = g.Key.IdEmpresa,
                    IdSucursal = g.Key.IdSucursal,
                    IdBodega = g.Key.IdBodega,
                    Fecha = g.Key.Fecha
                }).ToList();

                foreach (var item in lst_mov_agrupada)
                {
                    #region Cabecera
                    in_Ing_Egr_Inven Entity_cab = new in_Ing_Egr_Inven
                    {
                        IdEmpresa         = item.IdEmpresa,
                        IdSucursal        = item.IdSucursal,
                        IdMovi_inven_tipo = Convert.ToInt32(Entity_p.IdMovi_inven_tipo_mobile_egr),
                        IdNumMovi         = get_id(item.IdEmpresa, item.IdSucursal, Convert.ToInt32(Entity_p.IdMovi_inven_tipo_mobile_egr)),
                        IdBodega          = item.IdBodega,
                        signo             = "-",
                        CodMoviInven      = "MOBILE",
                        cm_observacion    = "Aprobación móvil " + DateTime.Now.ToString("dd/MM/yyyy"),
                        cm_fecha          = item.Fecha,
                        Estado            = "A",
                        IdMotivo_Inv      = Entity_motivo_egr.IdMotivo_Inv
                    };
                    db_inv.in_Ing_Egr_Inven.Add(Entity_cab);
                    #endregion
                    #region Detalle
                    int sec = 1;
                    foreach (var mov in Lista.Where(q => q.IdEmpresa == item.IdEmpresa && q.IdSucursal == item.IdSucursal && q.IdBodega == item.IdBodega && q.Fecha == item.Fecha && q.cantidad < 0).ToList())
                    {
                        in_Ing_Egr_Inven_det Entity_det = new in_Ing_Egr_Inven_det
                        {
                            IdEmpresa         = Entity_cab.IdEmpresa,
                            IdSucursal        = Entity_cab.IdSucursal,
                            IdMovi_inven_tipo = Entity_cab.IdMovi_inven_tipo,
                            IdNumMovi         = Entity_cab.IdNumMovi,
                            Secuencia         = sec++,
                            IdBodega          = mov.IdBodega,
                            IdProducto        = mov.IdProducto,
                            dm_cantidad       = mov.cantidad,
                            dm_stock_actu     = 0,
                            dm_stock_ante     = 0,
                            dm_observacion    = "",
                            dm_precio         = 0,
                            mv_costo          = mov.do_precioFinal,
                            dm_peso           = 0,
                            IdCentroCosto     = mov.IdCentroCosto,
                            IdCentroCosto_sub_centro_costo = mov.IdCentroCosto_sub_centro_costo,
                            IdEstadoAproba               = "PEND",
                            IdUnidadMedida               = mov.IdUnidadMedida,
                            IdEmpresa_oc                 = mov.IdEmpresa_oc,
                            IdSucursal_inv               = mov.IdSucursal_oc,
                            IdOrdenCompra                = mov.IdOrdenCompra,
                            Secuencia_oc                 = mov.secuencia_oc,
                            Motivo_Aprobacion            = "Aprobación movil",
                            dm_cantidad_sinConversion    = mov.cantidad,
                            IdUnidadMedida_sinConversion = mov.IdUnidadMedida,
                            mv_costo_sinConversion       = mov.do_precioFinal,
                            IdMotivo_Inv                 = null
                        };
                        db_inv.in_Ing_Egr_Inven_det.Add(Entity_det);

                        tbl_movimientos_det_apro Entity_apro = new tbl_movimientos_det_apro
                        {
                            IdSincronizacion  = mov.IdSincronizacion,
                            IdSecuencia       = mov.IdSecuencia,
                            IdEmpresa         = mov.IdEmpresa,
                            IdSucursal        = mov.IdSucursal,
                            IdMovi_inven_tipo = Entity_cab.IdMovi_inven_tipo,
                            IdNumMovi         = Entity_cab.IdNumMovi,
                            Secuencia         = Entity_det.Secuencia
                        };
                        db_mobile.tbl_movimientos_det_apro.Add(Entity_apro);

                        var Entity_sinc = db_mobile.tbl_movimientos_det.Where(q => q.IdSincronizacion == mov.IdSincronizacion && q.IdSecuencia == mov.IdSecuencia).FirstOrDefault().Aprobado = true;
                    }
                    #endregion
                    db_inv.SaveChanges();
                    db_mobile.SaveChanges();
                    db_inv.spINV_aprobacion_movimiento(Entity_cab.IdEmpresa, Entity_cab.IdSucursal, Entity_cab.IdMovi_inven_tipo, Entity_cab.IdBodega, Entity_cab.IdNumMovi);
                }
                #endregion

                return(true);
            }
            catch (Exception)
            {
                db_inv.Dispose();
                db_mobile.Dispose();
                throw;
            }
        }