Exemple #1
0
    public static string GenerarTraspaso(Dictionary <string, object> pTraspaso)
    {
        CConexion ConexionBaseDatos = new CConexion();
        string    respuesta         = ConexionBaseDatos.ConectarBaseDatosSqlServer();
        JObject   oRespuesta        = new JObject();
        int       puedeTraspasarProductosSucursales = 1;

        if (respuesta == "Conexion Establecida")
        {
            //valido que el usuario este asignado al almacen origen
            string validacion = ValidaUsuario(Convert.ToInt32(HttpContext.Current.Session["IdUsuario"]), Convert.ToInt32(pTraspaso["pIdExistenciaDistribuida"]), ConexionBaseDatos);
            if (validacion == "Error")
            {
                oRespuesta.Add(new JProperty("Error", 1));
                oRespuesta.Add(new JProperty("Descripcion", "El usuario no esta asignado al almacén origen."));
            }
            else
            {
                CFacturaEncabezado          EncabezadoFactura          = new CFacturaEncabezado();
                CExistenciaDistribuida      ExistenciaDistribuida      = new CExistenciaDistribuida();
                CEncabezadoFacturaProveedor EncabezadoFacturaProveedor = new CEncabezadoFacturaProveedor();

                //Verifico que los datos no vayan vacios y en su caso, en ceros.
                if (Convert.ToString(HttpContext.Current.Session["IdUsuario"]).ToString() != "" && Convert.ToString(HttpContext.Current.Session["IdUsuario"]).ToString() != "0" && Convert.ToString(pTraspaso["pIdAlmacenDestino"]).ToString() != "" && Convert.ToString(pTraspaso["pIdAlmacenDestino"]).ToString() != "0" && Convert.ToString(pTraspaso["pCantidadDeEntrada"]).ToString() != "" && Convert.ToString(pTraspaso["pCantidadDeEntrada"]).ToString() != "0" && Convert.ToString(pTraspaso["pCantidadDeEntrada"]).ToString() != "" && Convert.ToString(pTraspaso["pCantidadDeEntrada"]).ToString() != "0" && Convert.ToString(pTraspaso["pSaldo"]).ToString() != "0" && Convert.ToString(pTraspaso["pSaldo"]).ToString() != "" && Convert.ToString(pTraspaso["pIdExistenciaDistribuida"]).ToString() != "" && Convert.ToString(pTraspaso["pIdExistenciaDistribuida"]).ToString() != "0")
                {
                    //Valido si las sucursales son distintas
                    int validacionSucursales = ValidaSucursal(Convert.ToInt32(pTraspaso["pIdAlmacenOrigen"]), Convert.ToInt32(pTraspaso["pIdAlmacenDestino"]), ConexionBaseDatos);
                    if (validacionSucursales == 0)
                    {
                        //Si resulto ser de distintas sucursales verificamos si tiene permiso
                        JObject  oPermisos = new JObject();
                        CUsuario Usuario   = new CUsuario();
                        if (Usuario.TienePermisos(new string[] { "puedeTraspasarProductosSucursales" }, ConexionBaseDatos) == "")
                        {
                            puedeTraspasarProductosSucursales = 1;
                        }
                        else
                        {
                            puedeTraspasarProductosSucursales = 0;
                        }
                        oPermisos.Add("puedeEditarTraspaso", puedeTraspasarProductosSucursales);
                    }

                    //Fin de Valido si las sucursales son distintas

                    if (puedeTraspasarProductosSucursales == 1)
                    {
                        //Para hacerlo mas legible, verifico aquí que la cantidad pedida no sea mayor al saldo existente
                        if (Convert.ToInt32(pTraspaso["pSaldo"]) >= Convert.ToInt32(pTraspaso["pCantidadDeEntrada"]) && Convert.ToInt32(pTraspaso["pCantidad"]) >= Convert.ToInt32(pTraspaso["pCantidadDeEntrada"]) && Convert.ToInt32(pTraspaso["pCantidad"]) >= 0 && Convert.ToInt32(pTraspaso["pSaldo"]) >= 0)
                        {
                            ExistenciaDistribuida.IdUsuario = Convert.ToInt32(HttpContext.Current.Session["IdUsuario"]);
                            ExistenciaDistribuida.IdAlmacen = Convert.ToInt32(pTraspaso["pIdAlmacenDestino"]);
                            ExistenciaDistribuida.Cantidad  = Convert.ToInt32(pTraspaso["pCantidadDeEntrada"]);
                            ExistenciaDistribuida.Saldo     = Convert.ToInt32(pTraspaso["pSaldo"]);
                            ExistenciaDistribuida.IdExistenciaDistribuida = Convert.ToInt32(pTraspaso["pIdExistenciaDistribuida"]);
                            ExistenciaDistribuida.GenerarTraspaso(ConexionBaseDatos);
                            oRespuesta.Add(new JProperty("Error", 0));
                        }
                        else
                        {
                            oRespuesta.Add(new JProperty("Error", 1));
                            oRespuesta.Add(new JProperty("Descripcion", "La cantidad solicitada no puede ser mayor al saldo disponible del almacén ni a la cantidad detalle."));
                        }
                    }
                    else
                    {
                        oRespuesta.Add(new JProperty("Error", 1));
                        oRespuesta.Add(new JProperty("Descripcion", "No cuenta con los permisos necesarios para traspasar productos de diversas sucursales."));
                    }
                }
                else
                {
                    oRespuesta.Add(new JProperty("Error", 1));
                    oRespuesta.Add(new JProperty("Descripcion", "Asegúrese de que todos los datos esten capturados."));
                }
            }
        }
        else
        {
            oRespuesta.Add(new JProperty("Error", 1));
            oRespuesta.Add(new JProperty("Descripcion", "No hay conexion a Base de Datos"));
        }
        ConexionBaseDatos.CerrarBaseDatosSqlServer();
        return(oRespuesta.ToString());
    }
    //Constructores

    //Metodos Especiales
    public static JObject ObtenerEncabezadoFacturaProveedor(JObject pModelo, int pIdEncabezadoFacturaProveedor, CConexion pConexion)
    {
        CEncabezadoFacturaProveedor EncabezadoFacturaProveedor = new CEncabezadoFacturaProveedor();

        EncabezadoFacturaProveedor.LlenaObjeto(pIdEncabezadoFacturaProveedor, pConexion);
        pModelo.Add(new JProperty("IdEncabezadoFacturaProveedor", EncabezadoFacturaProveedor.IdEncabezadoFacturaProveedor));
        pModelo.Add(new JProperty("IdProveedor", EncabezadoFacturaProveedor.IdProveedor));
        pModelo.Add(new JProperty("NumeroFactura", EncabezadoFacturaProveedor.NumeroFactura));

        CProveedor Proveedor = new CProveedor();

        Proveedor.LlenaObjeto(EncabezadoFacturaProveedor.IdProveedor, pConexion);

        CCondicionPago CondicionPago = new CCondicionPago();

        CondicionPago.LlenaObjeto(EncabezadoFacturaProveedor.IdCondicionPago, pConexion);
        pModelo.Add(new JProperty("IdCondicionPago", CondicionPago.IdCondicionPago));
        pModelo.Add(new JProperty("CondicionPago", CondicionPago.CondicionPago));

        COrganizacion Organizacion = new COrganizacion();

        Organizacion.LlenaObjeto(Proveedor.IdOrganizacion, pConexion);
        pModelo.Add(new JProperty("RazonSocial", Organizacion.RazonSocial));
        pModelo.Add(new JProperty("RFC", Organizacion.RFC));

        CDivision Division = new CDivision();

        Division.LlenaObjeto(EncabezadoFacturaProveedor.IdDivision, pConexion);
        pModelo.Add(new JProperty("IdDivision", Division.IdDivision));
        pModelo.Add(new JProperty("Division", Division.Division));

        pModelo.Add(new JProperty("IdAlmacen", EncabezadoFacturaProveedor.IdAlmacen));
        CAlmacen Almacen = new CAlmacen();

        Almacen.LlenaObjeto(EncabezadoFacturaProveedor.IdAlmacen, pConexion);
        pModelo.Add(new JProperty("Almacen", Almacen.Almacen));

        CTipoMoneda TipoMoneda = new CTipoMoneda();

        TipoMoneda.LlenaObjeto(EncabezadoFacturaProveedor.IdTipoMoneda, pConexion);
        pModelo.Add(new JProperty("IdTipoMoneda", TipoMoneda.IdTipoMoneda));
        pModelo.Add(new JProperty("TipoMoneda", TipoMoneda.TipoMoneda));

        pModelo.Add(new JProperty("FechaFactura", EncabezadoFacturaProveedor.Fecha.ToShortDateString()));
        pModelo.Add(new JProperty("FechaPago", EncabezadoFacturaProveedor.FechaPago.ToShortDateString()));
        pModelo.Add(new JProperty("NumeroGuia", EncabezadoFacturaProveedor.NumeroGuia));

        pModelo.Add(new JProperty("SubtotalFactura", EncabezadoFacturaProveedor.Subtotal));
        pModelo.Add(new JProperty("IVAFactura", EncabezadoFacturaProveedor.IVA));
        pModelo.Add(new JProperty("TotalFactura", EncabezadoFacturaProveedor.Total));
        pModelo.Add(new JProperty("TotalFacturaLetra", EncabezadoFacturaProveedor.TotalLetra));
        if (EncabezadoFacturaProveedor.IdEstatusEncabezadoFacturaProveedor == 1)
        {
            pModelo.Add(new JProperty("Estatus", "CANCELADA"));
        }
        else if (EncabezadoFacturaProveedor.IdEstatusEncabezadoFacturaProveedor == 2)
        {
            pModelo.Add(new JProperty("Estatus", "PAGADA PARCIAL"));
        }
        else if (EncabezadoFacturaProveedor.IdEstatusEncabezadoFacturaProveedor == 3)
        {
            pModelo.Add(new JProperty("Estatus", "PAGADA TOTAL"));
        }
        else
        {
            pModelo.Add(new JProperty("Estatus", "PENDIENTE"));
        }

        pModelo.Add(new JProperty("IdEstatus", Convert.ToInt32(EncabezadoFacturaProveedor.IdEstatusEncabezadoFacturaProveedor)));

        pModelo.Add(new JProperty("TipoCambioFactura", EncabezadoFacturaProveedor.TipoCambio));

        // Cliente
        CDetalleFacturaProveedor DetalleFacturaProveedor = new CDetalleFacturaProveedor();
        CCliente      Cliente             = new CCliente();
        COrganizacion ClienteOrganizacion = new COrganizacion();

        // DANIEL
        Dictionary <string, object> Parametros = new Dictionary <string, object>();

        Parametros.Add("IdEncabezadoFacturaProveedor", EncabezadoFacturaProveedor.IdEncabezadoFacturaProveedor);
        DetalleFacturaProveedor.LlenaObjetoFiltros(Parametros, pConexion);

        /*
         * No se esta llenano bien el objeto DetalleFacturaProveedor
         * Siempre devuelve 0 el IdPedido aunque si devuelve bien el id del cliente
         * La el error esta en las lineas debajo de // Cotizacion
         */

        Cliente.LlenaObjeto(DetalleFacturaProveedor.IdCliente, pConexion);
        ClienteOrganizacion.LlenaObjeto(Cliente.IdOrganizacion, pConexion);
        pModelo.Add(new JProperty("Cliente", ClienteOrganizacion.RazonSocial));
        pModelo.Add(new JProperty("IdCliente", Cliente.IdCliente));
        Parametros.Clear();

        // Cotizacion
        pModelo.Add(new JProperty("Cotizaciones", CCotizacion.ObtenerPedidosClienteRecepcion(Cliente.IdCliente, DetalleFacturaProveedor.IdPedido, pConexion)));
        // linea de debug para ver el idPedido se se esta obteniendo.
        pModelo.Add(new JProperty("IdPedido", DetalleFacturaProveedor.IdPedido));


        return(pModelo);
    }