Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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;
            }
        }
Esempio n. 3
0
        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();
        }