private void AgregarVentaServicio(Entities.Vista_ServiciosMantenimientos vistaServicio, int cantidadServicios) { Entities.OrdenesServicios ordenServicio = new Entities.OrdenesServicios(); ordenServicio.Cantidad = cantidadServicios; ordenServicio.EstatusOrdenServicio_ID = 1; ordenServicio.Precio = vistaServicio.Precio; ordenServicio.ServicioMantenimiento_ID = vistaServicio.ServicioMantenimiento_ID; ordenServicio.Total = ordenServicio.Cantidad * ordenServicio.Precio; ordenServicio.ServicioMantenimiento_Descripcion = vistaServicio.Nombre; Padre.OrdenTrabajo.OrdenesServicios.Add(ordenServicio); MostrarTotales(); }
private void DoNavigate() { if (Vista_ServiciosMantenimientosDataGridView.Columns[col].Name == "EditColumn") { forms.ActualizacionServiciosMantenimientos ServiciosMantenimientosForm = new ActualizacionServiciosMantenimientos(); Entities.Vista_ServiciosMantenimientos ServiciosMantenimientosLower = (Entities.Vista_ServiciosMantenimientos)Vista_ServiciosMantenimientosDataGridView.Rows[row].DataBoundItem; ServiciosMantenimientosForm.ServicioMantenimiento_ID = ServiciosMantenimientosLower.ServicioMantenimiento_ID; Padre.SwitchForma("ActualizacionServiciosMantenimientos", ServiciosMantenimientosForm); return; } if (Vista_ServiciosMantenimientosDataGridView.Columns[col].Name == "PreciosColumn") { forms.ServiciosMantenimientosPrecios ServiciosMantenimientosForm = new ServiciosMantenimientosPrecios(); Entities.Vista_ServiciosMantenimientos ServiciosMantenimientosLower = (Entities.Vista_ServiciosMantenimientos)Vista_ServiciosMantenimientosDataGridView.Rows[row].DataBoundItem; ServiciosMantenimientosForm.ServicioMantenimiento_ID = ServiciosMantenimientosLower.ServicioMantenimiento_ID; Padre.SwitchForma("ServiciosMantenimientosPrecios", ServiciosMantenimientosForm); return; } if (Vista_ServiciosMantenimientosDataGridView.Columns[col].Name == "TiposRefaccionesColumn") { forms.ServiciosMantenimientosTiposRefacciones ServiciosMantenimientosTiposRefaccionesForm = new ServiciosMantenimientosTiposRefacciones(); Entities.Vista_ServiciosMantenimientos ServiciosMantenimientosLower = (Entities.Vista_ServiciosMantenimientos)Vista_ServiciosMantenimientosDataGridView.Rows[row].DataBoundItem; ServiciosMantenimientosTiposRefaccionesForm.ServicioMantenimiento_ID = ServiciosMantenimientosLower.ServicioMantenimiento_ID; Padre.SwitchForma("ServiciosMantenimientosTiposRefacciones", ServiciosMantenimientosTiposRefaccionesForm); return; } }
private void AgregarServicio(Entities.Vista_ServiciosMantenimientos vistaServicio, int cantidadServicios) { Entities.OrdenesServicios ordenServicio = new Entities.OrdenesServicios(); ordenServicio.Cantidad = cantidadServicios; ordenServicio.EstatusOrdenServicio_ID = 1; ordenServicio.Precio = vistaServicio.Precio; ordenServicio.ServicioMantenimiento_ID = vistaServicio.ServicioMantenimiento_ID; ordenServicio.Total = ordenServicio.Cantidad * ordenServicio.Precio; ordenServicio.ServicioMantenimiento_Descripcion = vistaServicio.Nombre; if (vistaServicio.Nombre == "VENTA DE REFACCIONES") { Padre.OrdenTrabajo.OrdenesServicios.Add(ordenServicio); MostrarTotales(); return; } // Consultar las refacciones que necesita el servicio List <Entities.ServiciosMantenimientos_TiposRefacciones> serviciosTiposRefacciones = Entities.ServiciosMantenimientos_TiposRefacciones.Read(ordenServicio.ServicioMantenimiento_ID); // Si no tiene configuradas refacciones if (serviciosTiposRefacciones.Count == 0) { throw new Exception("No hay refacciones asociadas con el servicio"); } // Obtener el modelo int?modeloUnidad_ID = DB.GetNullableInt32(this.Padre.Modelo_ID); bool ExisteInventario = false; // Para cada una, buscar en inventario, si hay existencia foreach (Entities.ServiciosMantenimientos_TiposRefacciones tipoRef in serviciosTiposRefacciones) { // Obtener las refacciones por tipo de servicio y modelo del auto List <Entities.Vista_Refacciones> refacciones = Entities.Vista_Refacciones.Get( null, tipoRef.TipoRefaccion_ID, null, modeloUnidad_ID, null, null, null, Sesion.Empresa_ID.Value, Sesion.Estacion_ID.Value ); foreach (Entities.Vista_Refacciones refaccion in refacciones) { // Si hay inventario int cantidad = tipoRef.Cantidad * ordenServicio.Cantidad; /* Verificar el inventario * Consultamos el inventario existente de la refacción, así como la cantidad * por surtir. Si la cantidad restante no es suficente, enviaremos aviso * */ int inventario = Entities.Functions.GetInventarioDiferido( refaccion.Refaccion_ID.Value, Sesion.Empresa_ID.Value, Sesion.Estacion_ID.Value ); // Si hay inventario suficiente if (inventario >= cantidad) { Entities.OrdenesServiciosRefacciones osr = new Entities.OrdenesServiciosRefacciones(); osr.Cantidad = cantidad; osr.CostoUnitario = refaccion.CostoUnitario.Value; // Aqui debe verificar si el precio es interno o externo if (this.TipoClienteTaller_ID == 1 || this.TipoClienteTaller_ID == 2 || this.TipoClienteTaller_ID == 3) { osr.PrecioUnitario = refaccion.PrecioInterno.Value; } else { osr.PrecioUnitario = refaccion.PrecioExterno.Value; } // Fin de verificación osr.Refaccion_ID = refaccion.Refaccion_ID.Value; osr.RefSurtidas = 0; osr.Total = osr.PrecioUnitario * osr.Cantidad; osr.Refaccion_Descripcion = refaccion.Descripcion; ordenServicio.OrdenesServiciosRefacciones.Add(osr); // Si hay inventario para la refacción ExisteInventario = true; // Salir del ciclo break; } // End if } // End foreach // Si no existe inventario if (!ExisteInventario) { // Obtener las refacciones por tipo de servicio y modelo del auto generico refacciones = Entities.Vista_Refacciones.Get( null, tipoRef.TipoRefaccion_ID, null, 9, null, null, null, Sesion.Empresa_ID.Value, Sesion.Estacion_ID.Value ); // Verificamos que existan refacciones if (refacciones.Count == 0) { Entities.TiposRefacciones tiporefaccion = Entities.TiposRefacciones.Read(tipoRef.TipoRefaccion_ID); Entities.Modelos modelo = Entities.Modelos.Read(modeloUnidad_ID.Value); AppHelper.ThrowException("No hay refacciones del tipo {0} y modelo {1}", tiporefaccion.Nombre, modelo.Nombre); } foreach (Entities.Vista_Refacciones refaccion in refacciones) { // Si hay inventario int cantidad = tipoRef.Cantidad * ordenServicio.Cantidad; /* Verificar el inventario * Consultamos el inventario existente de la refacción, así como la cantidad * por surtir. Si la cantidad restante no es suficente, enviaremos aviso * */ int inventario = Entities.Functions.GetInventarioDiferido( refaccion.Refaccion_ID.Value, Sesion.Empresa_ID.Value, Sesion.Estacion_ID.Value ); // Si hay inventario suficiente if (inventario >= cantidad) { // Agregamos las refacciones // a la orden de servicio Entities.OrdenesServiciosRefacciones osr = new Entities.OrdenesServiciosRefacciones(); osr.Cantidad = cantidad; osr.CostoUnitario = refaccion.CostoUnitario.Value; // Aqui debe verificar si el precio es interno o externo if (this.TipoClienteTaller_ID == 1 || this.TipoClienteTaller_ID == 2 || this.TipoClienteTaller_ID == 3) { osr.PrecioUnitario = refaccion.PrecioInterno.Value; } else { osr.PrecioUnitario = refaccion.PrecioExterno.Value; } // Fin de verificación osr.Refaccion_ID = refaccion.Refaccion_ID.Value; osr.RefSurtidas = 0; osr.Total = osr.PrecioUnitario * osr.Cantidad; osr.Refaccion_Descripcion = refaccion.Descripcion; ordenServicio.OrdenesServiciosRefacciones.Add(osr); // Si existe inventario ExisteInventario = true; // Salimos del ciclo break; } // End if } // End foreach } // End if // Si no hay inventario, ni siguiera con modelo genérico if (!ExisteInventario) { Entities.TiposRefacciones tiporefaccion = Entities.TiposRefacciones.Read(tipoRef.TipoRefaccion_ID); Entities.Modelos modelo = Entities.Modelos.Read(modeloUnidad_ID.Value); AppHelper.ThrowException("No hay refacciones del tipo {0} y modelo {1}", tiporefaccion.Nombre, modelo.Nombre); } ExisteInventario = false; continue; } // End foreach Padre.OrdenTrabajo.OrdenesServicios.Add(ordenServicio); MostrarTotales(); }