public JsonResult GetLotesPorProducto(int IdSucursal = 0, int IdPuntoVta = 0, decimal IdProducto = 0)
        {
            int IdEmpresa = Convert.ToInt32(SessionFixed.IdEmpresa);
            var resultado = bus_producto.get_info(IdEmpresa, IdProducto);

            if (resultado == null)
            {
                resultado = new in_Producto_Info();
            }

            var punto_venta = bus_punto_venta.get_info(IdEmpresa, IdSucursal, IdPuntoVta);

            if (punto_venta != null)
            {
                if (resultado.IdProducto_padre > 0)
                {
                    List_producto.set_list(bus_producto.get_list_stock_lotes(IdEmpresa, IdSucursal, Convert.ToInt32(punto_venta.IdBodega), Convert.ToDecimal(resultado.IdProducto_padre)));
                }
            }
            else
            {
                List_producto.set_list(new List <in_Producto_Info>());
            }
            return(Json(resultado, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 2
0
        public JsonResult MostrarBotonesSRI(int IdSucursal = 0, int IdPuntoVta = 0)
        {
            var resultado   = 0;
            int IdEmpresa   = Convert.ToInt32(SessionFixed.IdEmpresa);
            var punto_venta = bus_punto_venta.get_info(IdEmpresa, IdSucursal, IdPuntoVta);

            resultado = (punto_venta.EsElectronico == true) ? 1 : 0;

            return(Json(new { resultado }, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 3
0
        public ActionResult Modificar(int IdEmpresa = 0, int IdSucursal = 0, int IdPuntoVta = 0)
        {
            fa_PuntoVta_Info model = bus_punto.get_info(IdEmpresa, IdSucursal, IdPuntoVta);

            if (model == null)
            {
                return(RedirectToAction("Index"));
            }
            cargar_combos(model);
            return(View(model));
        }
Ejemplo n.º 4
0
        public ActionResult Nuevo(fa_guia_remision_Info model)
        {
            try
            {
                fa_PuntoVta_Info info_puntovta = new fa_PuntoVta_Info();
                info_puntovta = bus_punto_venta.get_info(model.IdEmpresa, model.IdSucursal, model.IdPuntoVta);

                model.IdBodega              = info_puntovta.IdBodega;
                model.IdUsuarioCreacion     = SessionFixed.IdUsuario;
                model.CodGuiaRemision       = (model.CodGuiaRemision == null) ? "" : model.CodGuiaRemision;
                model.lst_detalle_x_factura = List_rel.get_list(model.IdTransaccionSession);
                model.lst_detalle           = detalle_info.get_list(model.IdTransaccionSession);
                model.CodDocumentoTipo      = cl_enumeradores.eTipoDocumento.GUIA.ToString();

                string mensaje = bus_guia.validar(model);
                if (mensaje != "")
                {
                    cargar_combos(model);
                    ViewBag.mensaje = mensaje;
                    SessionFixed.IdTransaccionSessionActual = model.IdTransaccionSession.ToString();
                    return(View(model));
                }
                if (!validar(model, ref mensaje))
                {
                    cargar_combos(model);
                    ViewBag.mensaje = mensaje;
                    SessionFixed.IdTransaccionSessionActual = model.IdTransaccionSession.ToString();
                    return(View(model));
                }
                if (!bus_guia.guardarDB(model))
                {
                    ViewBag.mensaje = "Ha ocurrido un problema, comuniquese con sistemas";
                    cargar_combos(model);
                    SessionFixed.IdTransaccionSessionActual = model.IdTransaccionSession.ToString();
                    return(View(model));
                }

                return(RedirectToAction("Modificar", new { IdEmpresa = model.IdEmpresa, IdGuiaRemision = model.IdGuiaRemision, Exito = true }));
            }
            catch (Exception ex)
            {
                //SisLogError.set_list((ex.InnerException) == null ? ex.Message.ToString() : ex.InnerException.ToString());

                ViewBag.error = ex.Message.ToString();
                cargar_combos(model);
                return(View(model));
            }
        }
Ejemplo n.º 5
0
        public JsonResult GetUltimoDocumento(int IdSucursal = 0, int IdPuntoVta = 0)
        {
            int IdEmpresa = Convert.ToInt32(SessionFixed.IdEmpresa);
            tb_sis_Documento_Tipo_Talonario_Info resultado;
            var punto_venta = bus_punto_venta.get_info(IdEmpresa, IdSucursal, IdPuntoVta);

            if (punto_venta != null)
            {
                resultado = bus_talonario.GetUltimoNoUsado(IdEmpresa, cl_enumeradores.eTipoDocumento.NTDB.ToString(), punto_venta.Su_CodigoEstablecimiento, punto_venta.cod_PuntoVta, punto_venta.EsElectronico, false);
            }
            else
            {
                resultado = new tb_sis_Documento_Tipo_Talonario_Info();
            }
            if (resultado == null)
            {
                resultado = new tb_sis_Documento_Tipo_Talonario_Info();
            }
            return(Json(new { data_puntovta = punto_venta, data_talonario = resultado }, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 6
0
        public ActionResult Consultar(int IdEmpresa = 0, int IdSucursal = 0, int IdPuntoVta = 0, bool Exito = false)
        {
            #region Validar Session
            if (string.IsNullOrEmpty(SessionFixed.IdTransaccionSession))
            {
                return(RedirectToAction("Login", new { Area = "", Controller = "Account" }));
            }
            SessionFixed.IdTransaccionSession       = (Convert.ToDecimal(SessionFixed.IdTransaccionSession) + 1).ToString();
            SessionFixed.IdTransaccionSessionActual = SessionFixed.IdTransaccionSession;
            #endregion

            fa_PuntoVta_Info model = bus_punto.get_info(IdEmpresa, IdSucursal, IdPuntoVta);
            model.lst_usuarios         = bus_punto_usuario.get_list(IdEmpresa, IdPuntoVta);
            model.IdTransaccionSession = Convert.ToDecimal(SessionFixed.IdTransaccionSessionActual);
            Lista_PtoVta_Usuario.set_list(model.lst_usuarios, model.IdTransaccionSession);
            if (model == null)
            {
                return(RedirectToAction("Index"));
            }

            #region Permisos
            seg_Menu_x_Empresa_x_Usuario_Info info = bus_permisos.get_list_menu_accion(Convert.ToInt32(SessionFixed.IdEmpresa), SessionFixed.IdUsuario, "Facturacion", "PuntoVenta", "Index");
            model.Nuevo     = (info.Nuevo == true ? 1 : 0);
            model.Modificar = (info.Modificar == true ? 1 : 0);
            model.Anular    = (info.Anular == true ? 1 : 0);
            #endregion


            if (Exito)
            {
                ViewBag.MensajeSuccess = MensajeSuccess;
            }

            cargar_combos(model);
            return(View(model));
        }
Ejemplo n.º 7
0
        public ActionResult Consultar(int IdEmpresa = 0, int IdSucursal = 0, int IdPuntoVta = 0, bool Exito = false)
        {
            fa_PuntoVta_Info model = bus_punto.get_info(IdEmpresa, IdSucursal, IdPuntoVta);

            if (model == null)
            {
                return(RedirectToAction("Index"));
            }

            #region Permisos
            seg_Menu_x_Empresa_x_Usuario_Info info = bus_permisos.get_list_menu_accion(Convert.ToInt32(SessionFixed.IdEmpresa), SessionFixed.IdUsuario, "Facturacion", "PuntoVenta", "Index");
            ViewBag.Nuevo     = info.Nuevo;
            ViewBag.Modificar = info.Modificar;
            ViewBag.Anular    = info.Anular;
            #endregion

            if (Exito)
            {
                ViewBag.MensajeSuccess = MensajeSuccess;
            }

            cargar_combos(model);
            return(View(model));
        }
Ejemplo n.º 8
0
        public JsonResult GetUltimoDocumento(int IdSucursal = 0, int IdPuntoVta = 0)
        {
            int IdEmpresa = Convert.ToInt32(SessionFixed.IdEmpresa);
            tb_sis_Documento_Tipo_Talonario_Info resultado = new tb_sis_Documento_Tipo_Talonario_Info();
            var punto_venta = bus_punto_venta.get_info(IdEmpresa, IdSucursal, IdPuntoVta);

            if (punto_venta != null)
            {
                var sucursal = bus_sucursal.get_info(IdEmpresa, IdSucursal);
                resultado = bus_talonario.get_info_ultimo_no_usado(IdEmpresa, sucursal.Su_CodigoEstablecimiento, punto_venta.cod_PuntoVta, "GUIA");
            }

            if (resultado == null)
            {
                resultado = new tb_sis_Documento_Tipo_Talonario_Info();
            }
            return(Json(resultado, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 9
0
        private bool validar_factura(fa_factura_Info i_validar, ref string msg)
        {
            string MsgValidaciones = string.Empty;

            i_validar.lst_det = List_det.get_list(i_validar.IdTransaccionSession);
            if (i_validar.lst_det.Count == 0)
            {
                msg = "No ha ingresado registros en el detalle de la factura";
                return(false);
            }
            if (i_validar.lst_det.Where(q => q.vt_cantidad == 0).Count() > 0)
            {
                msg = "Existen registros con cantidad 0 en el detalle de la factura";
                return(false);
            }
            if (i_validar.lst_det.Where(q => q.IdProducto == 0).Count() > 0)
            {
                msg = "Existen registros sin producto en el detalle de la factura";
                return(false);
            }
            if (i_validar.lst_det.Sum(q => q.vt_total) == 0)
            {
                msg = "La factura no tiene valor, por favor revise";
                return(false);
            }

            #region Talonario
            var pto_vta = bus_punto_venta.get_info(i_validar.IdEmpresa, i_validar.IdSucursal, Convert.ToInt32(i_validar.IdPuntoVta));
            if (pto_vta != null && pto_vta.EsElectronico)
            {
                var info_documento = bus_talonario.GetUltimoNoUsado(i_validar.IdEmpresa, cl_enumeradores.eTipoDocumento.FACT.ToString(), pto_vta.Su_CodigoEstablecimiento, pto_vta.cod_PuntoVta, pto_vta.EsElectronico, false);
                i_validar.vt_NumFactura = info_documento.NumDocumento;
            }
            i_validar.IdBodega  = pto_vta.IdBodega;
            i_validar.vt_serie1 = pto_vta.Su_CodigoEstablecimiento;
            i_validar.vt_serie2 = pto_vta.cod_PuntoVta;
            i_validar.IdCaja    = pto_vta.IdCaja;
            #endregion

            #region Validar cliente final
            var param = bus_param.get_info(i_validar.IdEmpresa);
            if (param != null && param.IdClienteConsumidorFinal != null && param.MontoMaximoConsumidorFinal > 0 && i_validar.IdCliente == param.IdClienteConsumidorFinal)
            {
                if (i_validar.info_resumen.Total > Convert.ToDecimal(param.MontoMaximoConsumidorFinal ?? 0))
                {
                    msg = "El límite de venta para consumidor final es de $ " + param.MontoMaximoConsumidorFinal.ToString() + ", por favor revise.";
                    return(false);
                }
            }
            #endregion

            #region Resumen
            i_validar.info_resumen = new fa_factura_resumen_Info
            {
                SubtotalIVASinDscto    = (decimal)Math.Round(i_validar.lst_det.Where(q => q.vt_por_iva != 0).Sum(q => q.vt_cantidad * q.vt_Precio), 2, MidpointRounding.AwayFromZero),
                SubtotalSinIVASinDscto = (decimal)Math.Round(i_validar.lst_det.Where(q => q.vt_por_iva == 0).Sum(q => q.vt_cantidad * q.vt_Precio), 2, MidpointRounding.AwayFromZero),

                Descuento = (decimal)Math.Round(i_validar.lst_det.Sum(q => q.vt_DescUnitario * q.vt_cantidad), 2, MidpointRounding.AwayFromZero),

                SubtotalIVAConDscto    = (decimal)Math.Round(i_validar.lst_det.Where(q => q.vt_por_iva != 0).Sum(q => q.vt_Subtotal), 2, MidpointRounding.AwayFromZero),
                SubtotalSinIVAConDscto = (decimal)Math.Round(i_validar.lst_det.Where(q => q.vt_por_iva == 0).Sum(q => q.vt_Subtotal), 2, MidpointRounding.AwayFromZero),

                ValorIVA = (decimal)Math.Round(i_validar.lst_det.Sum(q => q.vt_iva), 2, MidpointRounding.AwayFromZero)
            };
            i_validar.info_resumen.SubtotalSinDscto = i_validar.info_resumen.SubtotalIVASinDscto + i_validar.info_resumen.SubtotalSinIVASinDscto;
            i_validar.info_resumen.SubtotalConDscto = i_validar.info_resumen.SubtotalIVAConDscto + i_validar.info_resumen.SubtotalSinIVAConDscto;
            i_validar.info_resumen.Total            = i_validar.info_resumen.SubtotalConDscto + i_validar.info_resumen.ValorIVA;
            #endregion


            i_validar.IdUsuario        = SessionFixed.IdUsuario;
            i_validar.IdUsuarioUltModi = SessionFixed.IdUsuario;

            #region ValidacionDeTalonario
            if (i_validar.IdCbteVta == 0 && !pto_vta.EsElectronico)
            {
                var talonario = bus_talonario.get_info(i_validar.IdEmpresa, i_validar.vt_tipoDoc, i_validar.vt_serie1, i_validar.vt_serie2, i_validar.vt_NumFactura);
                if (talonario == null)
                {
                    msg = "No existe un talonario creado con la numeración: " + i_validar.vt_serie1 + "-" + i_validar.vt_serie2 + "-" + i_validar.vt_NumFactura;
                    return(false);
                }
                if (talonario.Usado == true)
                {
                    msg = "El talonario: " + i_validar.vt_serie1 + "-" + i_validar.vt_serie2 + "-" + i_validar.vt_NumFactura + " se encuentra utilizado.";
                    return(false);
                }
                if (bus_factura.factura_existe(i_validar.IdEmpresa, i_validar.vt_serie1, i_validar.vt_serie2, i_validar.vt_NumFactura))
                {
                    msg = "Existe una factura registrada con el número: " + i_validar.vt_serie1 + "-" + i_validar.vt_serie2 + "-" + i_validar.vt_NumFactura + ".";
                    return(false);
                }
            }

            #endregion

            #region ValidarStock
            if (i_validar.lst_det.Where(q => q.tp_manejaInven == "S").Count() > 0)
            {
                if (!bus_periodo.ValidarFechaTransaccion(i_validar.IdEmpresa, i_validar.vt_fecha, cl_enumeradores.eModulo.INV, i_validar.IdSucursal, ref msg))
                {
                    return(false);
                }
                var lst_validar = i_validar.lst_det.GroupBy(q => new { q.IdProducto, q.pr_descripcion, q.tp_manejaInven, q.se_distribuye }).Select(q => new in_Producto_Stock_Info
                {
                    IdEmpresa      = i_validar.IdEmpresa,
                    IdSucursal     = i_validar.IdSucursal,
                    IdBodega       = i_validar.IdBodega,
                    IdProducto     = q.Key.IdProducto,
                    pr_descripcion = q.Key.pr_descripcion,
                    tp_manejaInven = q.Key.tp_manejaInven,
                    SeDestribuye   = q.Key.se_distribuye ?? false,

                    Cantidad         = q.Sum(v => v.vt_cantidad),
                    CantidadAnterior = q.Sum(v => v.CantidadAnterior),
                }).ToList();

                if (!bus_producto.validar_stock(lst_validar, ref msg))
                {
                    return(false);
                }
            }
            #endregion

            #region ValidarCentroCosto
            int IdEmpresa = Convert.ToInt32(SessionFixed.IdEmpresa);
            ct_parametro_Bus bus_parametro = new ct_parametro_Bus();
            var info_ct_parametro          = bus_parametro.get_info(IdEmpresa);

            if (i_validar.lst_det.Count > 0)
            {
                if (info_ct_parametro.EsCentroCostoObligatorio == true)
                {
                    foreach (var item in i_validar.lst_det)
                    {
                        if (item.IdCentroCosto == "" || item.IdCentroCosto == null)
                        {
                            mensaje = "Debe seleccionar el centro de costo para los items del detalle";
                            return(false);
                        }
                    }
                }
            }
            #endregion

            return(true);
        }