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); }